jsp+servlet+poi导出数据库中的数据

index.jsp:
<a href="POIout">简单导出数据</a>
<a href="POIoutTemplate">根据模板导出数据</a>
package com.wp.poi; import java.sql.Connection;
import java.sql.DriverManager;
//连接数据库类
public class DbUtil { private String dbUrl = "jdbc:mysql://localhost:3306/db_easyui";
private String dbUserName = "root";
private String dbPassword = "root";
private String jdbcName = "com.mysql.jdbc.Driver"; public Connection getCon() throws Exception {
Class.forName(jdbcName);
Connection con = DriverManager.getConnection(dbUrl, dbUserName,
dbPassword);
return con;
} public void closeCon(Connection con) throws Exception {
if (con != null) {
con.close();
}
}
}
package com.wp.poi; import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet; 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.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook; /**
* 普通导出数据
*
* @author admin
*
*/
public class POIout extends HttpServlet { public POIout() {
super();
} public void init() throws ServletException {
} public void destroy() {
super.destroy();
} public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=utf-8");
DbUtil dbUtil = new DbUtil();
Connection conn = null;
try {
conn = dbUtil.getCon();// 获得数据库连接
Workbook wb = new HSSFWorkbook();
String headers[] = { "编号", "姓名", "电话", "Email", "QQ" };// 标题
ResultSet rs = userList(conn);// 得到结果集
fillExcelData(rs, wb, headers);
export(response, wb, "导出数据.xls");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
dbUtil.closeCon(conn);
} catch (Exception e) {
e.printStackTrace();
}
}
} /**
* 查询数据库
*
* @param con
* @return ResultSet 返回结果集
* @throws Exception
*/
public ResultSet userList(Connection con) throws Exception {
StringBuffer sb = new StringBuffer("select * from t_user");
PreparedStatement pstmt = con.prepareStatement(sb.toString());
return pstmt.executeQuery();
} /**
* 导出用户
*
* @throws Exception
*/
public void fillExcelData(ResultSet rs, Workbook wb, String[] headers)
throws Exception {
int rowIndex = 0; // 第一行
Sheet sheet = wb.createSheet(); // 创建sheet页
Row row = sheet.createRow(rowIndex++);
// 创建标题
for (int i = 0; i < headers.length; i++) {
row.createCell(i).setCellValue(headers[i]);
}
// 导出数据库中的数据
while (rs.next()) {
row = sheet.createRow(rowIndex++);
for (int i = 0; i < headers.length; i++) {
row.createCell(i).setCellValue(rs.getObject(i + 1).toString());
//rs.getObject(i + 1)得到一个对象,即数据库中一行的结果,每一列就是属性凑成一行变成对象。因为id是从1开始,所以要+1。
}
}
} /**
* 把数据放入到.xls文件中并下载到本地
*
* @param response
* @param wb
* @param fileName
* @throws Exception
*/
public void export(HttpServletResponse response, Workbook wb,
String fileName) throws Exception {
response.setHeader("Content-Disposition", "attachment;filename="
+ new String(fileName.getBytes("utf-8"), "iso8859-1"));// 设置头信息
response.setContentType("application/ynd.ms-excel;charset=UTF-8");
OutputStream out = response.getOutputStream();
wb.write(out);// 进行输出,下载到本地
out.flush();
out.close();
}
}
package com.wp.poi; import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet; 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.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook; /**
* 利用模板导出数据
*
* @author admin
*
*/
public class POIoutTemplate extends HttpServlet { public POIoutTemplate() {
super();
} public void init() throws ServletException {
} public void destroy() {
super.destroy();
} public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=utf-8");
DbUtil dbUtil = new DbUtil();
Connection conn = null;
try {
conn = dbUtil.getCon();
Workbook wb = fillExcelDataWithTemplate(userList(conn),
"Template.xls");
export(response, wb, "利用模板导出的数据.xls");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
dbUtil.closeCon(conn);
} catch (Exception e) {
e.printStackTrace();
}
}
} /**
* 查询数据库
*
* @param con
* @return
* @throws Exception
*/
public ResultSet userList(Connection con) throws Exception {
StringBuffer sb = new StringBuffer("select * from t_user");
PreparedStatement pstmt = con.prepareStatement(sb.toString());
return pstmt.executeQuery();
} /**
* 根据模板导出用户
*
* @throws Exception
*/
public Workbook fillExcelDataWithTemplate(ResultSet rs,
String templateFileName) throws Exception {
InputStream in = POIoutTemplate.class
.getResourceAsStream("/com/wp/poi/" + templateFileName);
POIFSFileSystem fs = new POIFSFileSystem(in);// 解析Excel文件
Workbook wb = new HSSFWorkbook(fs);// 以解析的excel文件格式进行创建
Sheet sheet = wb.getSheetAt(0);
// 获取列数
int cellNums = sheet.getRow(0).getLastCellNum(); int rowIndex = 1;// 从1开始的原因,模板的第一行固定了,所以从下一行开始
while (rs.next()) {
Row row = sheet.createRow(rowIndex++);
for (int i = 0; i < cellNums; i++) {
row.createCell(i).setCellValue(rs.getObject(i + 1).toString());
}
}
return wb;
} /**
* 导出
*
* @param response
* @param wb
* @param fileName
* @throws Exception
*/
public static void export(HttpServletResponse response, Workbook wb,
String fileName) throws Exception {
response.setHeader("Content-Disposition", "attachment;filename="
+ new String(fileName.getBytes("utf-8"), "iso8859-1"));
response.setContentType("application/ynd.ms-excel;charset=UTF-8");
OutputStream out = response.getOutputStream();
wb.write(out);
out.flush();
out.close();
}
}
模板:

导出后:

Java小生店铺:
Pc端:http://shop125970977.taobao.com/index.htm
手机端:搜索 java小生店铺
希望店铺的资料能帮助到你!!!

jsp+servlet+poi导出数据库中的数据的更多相关文章
- JSP列表形式显示数据库中的数据 OracleCachedRowSet 实例
现在数据库中有一张用户表,希望用户在jsp页面中输入用户名和密码以及 用户类型,在servlet中插入数据库后,在另一个jsp页面中把数据库中所有的用户名和类型都以列表的形式列出来 可以用Ora ...
- 导出数据库中所有数据到Excle中
Workbook wb = new HSSFWorkbook();//创建工作簿 Connection conn = DataSourceUtils.getDataSource().getConnec ...
- python实用脚本-定时导出数据库中的数据并且发送数据到邮箱
1.发送邮件脚本 #coding=utf-8 import smtplib from email.header import Header from email.mime.text import MI ...
- jsp案例--展示数据库中的数据
一.什么是jsp? JAVA SERVER PAGES java的动态网页,servlet用来获取数据处理业务,擅长处理与java代码有关的内容.jsp展示数据,擅长处理与html有关的内容. 二.如 ...
- jsp+servlet上传excel并将数据导入到数据库表的实现方法
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上 1.JavaBean的使用 package com.zheng; public class BookBean { ...
- Java利用POI导入导出Excel中的数据
首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地 ...
- 如何将存储在MongoDB数据库中的数据导出到Excel中?
将MongoDB数据库中的数据导出到Excel中,只需以下几个步骤: (1)首先,打开MongoDB安装目录下的bin文件夹,(C:\Program Files (x86)\MongoDB\Serve ...
- [软件共享]将数据库中的数据导出为SQL脚本
可以直接将数据库中的数据导出为脚本,并可以自己设置过滤条件.使用方法很简单,不在多说了.下面是软件截图.123 下载:http://files.cnblogs.com/pw/mssql2.rar
随机推荐
- Xamarin + MvvmCross 简单事例 Part 2
MvvmCross 说起MvvmCross,要先说到Mvvm,Mvvm是Mvc框架的一种变形.对应的分别为Model.View和ViewModel层.三层之间的关系是这样的: Model层为数据层,实 ...
- [离散时间信号处理学习笔记] 7. z变换
z变换及其收敛域 回顾前面的文章,序列$x[n]$的傅里叶变换(实际上是DTFT,由于本书把它叫做序列的傅里叶变换,因此这里以及后面的文章也统一称DTFT为傅里叶变换)被定义为 $X(e^{j\ome ...
- js中session操作
// 保存数据到sessionStorage sessionStorage.setItem('key', 'value'); // 从sessionStorage获取数据 var data = s ...
- BZOJ1208[HNOI2004]宠物收养场——treap
凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领养者希望领 ...
- 洛谷P1083借教室题解
题目 这个难度感觉并没有那么高,因为这个题暴力也好打,但是比较难想出正解,因为如果你不看标签是很难想到这个题竟然是二分,当然前缀和应该很好想,毕竟让你求的是在某段时间内借教室的和是否满足. 这样我们可 ...
- MySql的CURRENT_TIMESTAMP
在创建时间字段的时候 DEFAULT CURRENT_TIMESTAMP表示当插入数据的时候,该字段默认值为当前时间 ON UPDATE CURRENT_TIMESTAMP表示每次更新这条数据的时候, ...
- 【bzoj3456】城市规划(多项式求逆+dp)
Description 求\(~n~\)个点组成的有标号无向连通图的个数.\(~1 \leq n \leq 13 \times 10 ^ 4~\). Solution 这道题的弱化版是poj1737, ...
- 搭建本地yum源并定时同步
在生产中内网的机器都是不能访问外网,所以需要搭建本地yum源.以中国科学科技大学的yum源为基准.http://mirrors.ustc.edu.cn/ 有些模块会同步失败,可以wget下载至指定位置 ...
- 【BZOJ5213】[ZJOI2018]迷宫(神仙题)
[BZOJ5213][ZJOI2018]迷宫(神仙题) 题面 BZOJ 洛谷 题解 首先可以很容易的得到一个\(K\)个点的答案. 构建\(K\)个点分别表示\(mod\ K\)的余数.那么点\(i\ ...
- js-基本语法
条件语句 通过条件来控制程序的走向,就需要用到条件语句. 运算符 1.算术运算符: +(加). -(减). (乘). /(除). %(求余) 2.赋值运算符:=. +=. -=. =. /=. %= ...