`
hnylj
  • 浏览: 211250 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

导出数据库数据到Excel

    博客分类:
  • poi
阅读更多

做了一个利用POI导出数据库数据到Excel的例子,并把这个例子与大家一起分享,一起学习,共同进步!
先简单介绍一下poi,poi是apache组织的一个开源项目,最新版为poi-3.0.1,要使用poi需要到apache网站下载poi-bin3.0.1.zip压缩包,并将poi-3.0.1.jar加入到项目的ClassPath中。

 

下面是完成这个实例的步骤:

1、建立好一个web工程:poi;

2、导入所需要的jar包:poi-3.0.1.jar和mysql数据库驱动包;

3、编写一个StudentResultSet类,用于取出数据库中的数据;

package org.hnylj.poi;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class StudentResultSet {
	private Connection conn;
	private PreparedStatement pstmt;
	private ResultSet rs;
	private static final String DRIVER = "com.mysql.jdbc.Driver";
	private static final String URL = "jdbc:mysql://localhost:3306/poi";
	private static final String USERNAME = "root";
	private static final String PASSWORD = "123";
    
	//查询数据库中的数据
	public ResultSet query() {
		try {
			Class.forName(DRIVER);
			conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
			pstmt = conn.prepareStatement("select * from student");
			rs = pstmt.executeQuery();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return rs;
	}
} 

4、编写一个BuildExcelServlet,用于生成Excel;

package org.hnylj.poi;

import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class BuildExcelServlet extends HttpServlet {

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		StudentResultSet stuResultSet = new StudentResultSet();
		ResultSet rs = stuResultSet.query();
		String xlsName = "test.xls";
		String sheetName = "sheetName";

		HSSFWorkbook workbook = new HSSFWorkbook();
		HSSFSheet sheet = workbook.createSheet();
		workbook.setSheetName(0, sheetName);
		HSSFRow row = sheet.createRow((short) 0);
		HSSFCell cell;
		try {
			ResultSetMetaData md = rs.getMetaData();
			int nColumn = md.getColumnCount();

			for (int i = 1; i <= nColumn; i++) {
				cell = row.createCell((short) (i - 1));
				cell.setCellType(HSSFCell.CELL_TYPE_STRING);
				cell.setCellValue(new HSSFRichTextString(md.getColumnLabel(i)));
			}
			int iRow = 1;
			while (rs.next()) {
				row = sheet.createRow((short) iRow);
				for (int j = 1; j <= nColumn; j++) {
					cell = row.createCell((short) (j - 1));
					cell.setCellType(HSSFCell.CELL_TYPE_STRING);
					cell.setCellValue(new HSSFRichTextString(rs.getObject(j)
							.toString()));
				}
				iRow++;
			}
			String filename = request.getRealPath("/") + xlsName;
			request.setAttribute("filename", filename);
			FileOutputStream fOut = new FileOutputStream(filename);
			workbook.write(fOut);
			fOut.flush();
			fOut.close();
			request.getRequestDispatcher("OpenExcelServlet").forward(request,
					response);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		this.doGet(request, response);
	}
}

5、编写一个OpenExcelServlet,用于把生成的Excel在页面上打开;

package org.hnylj.poi;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class OpenExcelServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("application/vnd.ms-excel");
		PrintWriter out = response.getWriter();
		String filePath = (String) request.getAttribute("filename");
		BufferedInputStream bis = null;
		try {
			bis = new BufferedInputStream(new FileInputStream(filePath));
			int bytesRead;
			while ((bytesRead = bis.read()) != -1) {
				out.write(bytesRead);
				out.flush();
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (bis != null)
				bis.close();
			if (out != null)
				out.close();
		}
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doGet(request, response);
	}
}

6、在web.xml里配置一下servlet的映射;

        <servlet>
		<servlet-name>BuildExcelServlet</servlet-name>
		<servlet-class>org.hnylj.poi.BuildExcelServlet</servlet-class>
	</servlet>
	<servlet>
		<servlet-name>OpenExcelServlet</servlet-name>
		<servlet-class>org.hnylj.poi.OpenExcelServlet</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>OpenExcelServlet</servlet-name>
		<url-pattern>/OpenExcelServlet</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>BuildExcelServlet</servlet-name>
		<url-pattern>/BuildExcelServlet</url-pattern>
	</servlet-mapping>

7、启动tomcat,运行程序。

 

一个Java技术交流群,一起交流,共同进步,扣扣群号:513086638

 

 

  • poi.rar (1.3 MB)
  • 描述: 导出数据库数据到Excel(源代码)
  • 下载次数: 359
4
0
分享到:
评论
3 楼 welcometoruishi 2011-09-02  
这个项目挺好的,我喜欢,谢谢分享!!
2 楼 hui94781674 2010-10-11  
这样写 为什么多个用户一起执行导出时会超级慢。。。
1 楼 glamey 2008-02-28  
为什么不用jxl呢,那个东西可好玩了。

相关推荐

    将Excel文件导入到数据库中或将数据库中文件导出Excel中

    以下将详细介绍如何将Excel文件导入到数据库中,以及如何将数据库中的数据导出到Excel中。 首先,将Excel文件导入数据库通常涉及到以下几个步骤: 1. 数据预处理:在Excel中整理数据,确保格式正确,无错误或缺失...

    java操作数据库 导出excel

    在导出数据库数据到Excel时,通常会遍历结果集,为每一行创建一个新的行对象,然后将每列数据设置到对应的单元格。 总结来说,完成"java操作数据库导出excel"的任务,你需要掌握以下关键点: 1. 使用JDBC连接数据库...

    将数据库数据导出到word excel txt文件中源码。

    导出数据库数据到Excel通常采用Python的pandas库或Java的Apache POI库。例如,在Python中,你可以先使用数据库连接(如sqlite3或pyodbc)获取数据,然后用pandas的DataFrame存储数据,最后使用`to_excel`函数写入...

    Android开发实现的导出数据库到Excel表格功能【附源码下载】

    "Android开发实现的导出数据库到Excel表格功能" 知识点一:Android数据库操作 在Android开发中,数据库操作是非常重要的一部分。本文中,我们使用了SQLite数据库来存储家庭账单的数据。SQLite是一种轻量级的关系...

    Qt实现导出数据库为Excel表

    本文将详细介绍如何利用Qt来实现从数据库导出数据到Excel表格的功能。 首先,我们需要理解Qt中的数据库模块。Qt支持多种数据库系统,如SQLite、MySQL、PostgreSQL等,通过QSqlDatabase类进行连接和操作。在项目开始...

    JSP SERVLET 导出数据库内容到EXCEL

    总结来说,"JSP SERVLET 导出数据库内容到EXCEL"是一个典型的Java Web应用场景,结合了JSP的视图呈现、Servlet的业务处理和数据库操作,以及第三方库Apache POI的文件生成能力,为企业级应用提供了强大的数据导出...

    数据库数据通过excel导出案例

    导出数据库数据到Excel通常有以下步骤: 1. **连接数据库**:使用数据库管理工具或编程语言(如Python的pandas库,Java的JDBC等)建立与数据库的连接。需要提供数据库的URL、用户名、密码以及驱动程序信息。 2. **...

    C# 定时自动导出数据库数据为Excel文件(有源代码),这是最新版本

    C#程序访问数据库,并按照数据库查询字段导出到excel文件中。访问数据库程序代码采用工厂模式创建,可访问多个数据库,access、sql server2000(2005)、oracle,此程序已在实际工作中稳定运行半年,可当产品出售。...

    VB代码 从数据库快速导出数据到EXCEL

    ### VB代码实现从数据库快速导出数据到EXCEL的知识点详解 #### 一、核心概念与技术背景 在企业级应用开发中,数据处理与报表生成是常见的需求之一。使用VB(Visual Basic)进行编程,可以高效地实现从数据库提取...

    SpringBoot导出Excel的四种方式

    在Spring Boot应用中,我们经常需要处理数据的导入导出功能,Excel作为广泛使用的电子表格格式,是数据交换的重要...而QueryDsl扩展则方便了数据库数据的导出。理解这些技术,能让你在处理Excel导出时更加游刃有余。

    winform导出数据库数据至Excel模板(预览及保存)例程

    在C# WinForm应用开发中,经常需要将数据库中的数据导出到Excel文件,以便进行数据分析、报表制作或数据共享。本例程提供了一种方法,允许用户将数据表的数据导出到预先设计好的Excel模板中,并且具备预览及保存功能...

    excel表导入数据库 数据库导出excel(idea平台)

    在这个主题中,我们将深入探讨如何使用Java技术栈,特别是基于IDEA开发环境,来实现在JSP和Servlet中进行Excel与数据库之间的数据导入和导出。 首先,我们需要了解Java中用于处理Excel文件的库,如Apache POI。...

    Excel 导出数据到数据库

    本文将深入探讨“Excel导出数据到数据库”这一主题,讲解如何高效地将Excel中的数据导入到数据库系统,以实现数据的统一管理和分析。 一、Excel的数据整理与预处理 在导出数据之前,首先需要对Excel中的数据进行...

    winform实现excel导入和导出数据库

    3. 导出数据库数据到Excel: 导出过程相对简单,只需要反向操作。先创建一个新的Excel工作表,然后逐行写入从数据库查询到的数据。可以使用相同的EPPlus库来创建和填充工作表,然后保存为Excel文件。 为了提高性能...

    java实现mysql数据库的表导出到excel文件

    在IT行业中,将数据库数据导出到Excel文件是一种常见的需求,尤其在数据分析、报表生成或者数据备份时。本文将详细讲解如何使用Java实现从MySQL数据库的表导出到Excel文件的过程,以及涉及到的关键技术和工具。 ...

    Access数据库导出数据到Excel.zip

    Access数据库导出数据到Excel是一种常见的数据交换方式,适用于数据预处理、分析或与不使用Access的同事分享数据。这个过程涉及到Access的基本操作和Excel的功能利用,对于IT专业人士来说,掌握这项技能对于提升工作...

Global site tag (gtag.js) - Google Analytics