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
随机推荐
- Wpf ViewModel中 ObservableCollection不支持从调度程序线程以外的线程对其 SourceCollection 进行的更改
Wpf中ViewModel类里面经常会需要用到ObservableCollection来管理列表数据,在做异步通信的时候也会碰到“不支持从调度程序线程以外的线程对其 SourceCollection ...
- How to install Windows 7 SP1 on Skylake
Download gigabyte windows usb installation tool http://www.gigabyte.cn/WebPage/-79/usb.html get Wind ...
- QXcbConnection: Could not connect to display
import matplotlib; matplotlib.use('agg') 注意:要添加到所有matplotlib前面,否则不起作用
- a标签实现锚点功能
a标签实现锚点功能 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- Ubuntu16.04系统美化、常用软件安装等,长期更新
Ubuntu16.04系统美化.常用软件安装等,长期更新 IT之家啊 18-09-0915:00 因为我个人偏向于玩VPS.服务器之类的东西,所以一般我都是用CentOS.不过对于桌面版的Linux, ...
- MT【284】构造函数的导数的两类题型
第一类: 已知定义在$R$上的奇函数$f(x),f(-1)=0,$当$x>0$时,$xf^{'}(x)-f(x)<0,$则$f(x)>0$的解集为____ 第二类: 已知函数$f(x ...
- [HEOI2015]小Z的房间(矩阵树定理学习笔记)
题目描述 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. 你想要打通一 ...
- [HAOI2010]最长公共子序列(LCS+dp计数)
字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X=“x0,x1,…,xm-1”,序列Y=“y0,y1,…,yk-1”是X ...
- DNA Consensus String
题目(中英对照): DNA (Deoxyribonucleic Acid) is the molecule which contains the genetic instructions. It co ...
- Python3 与 C# 扩展之~基础衍生
本文适应人群:C# or Python3 基础巩固 代码裤子: https://github.com/lotapp/BaseCode 在线编程: https://mybinder.org/v2/g ...