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导出数据库中的数据的更多相关文章

  1. JSP列表形式显示数据库中的数据 OracleCachedRowSet 实例

    现在数据库中有一张用户表,希望用户在jsp页面中输入用户名和密码以及 用户类型,在servlet中插入数据库后,在另一个jsp页面中把数据库中所有的用户名和类型都以列表的形式列出来    可以用Ora ...

  2. 导出数据库中所有数据到Excle中

    Workbook wb = new HSSFWorkbook();//创建工作簿 Connection conn = DataSourceUtils.getDataSource().getConnec ...

  3. python实用脚本-定时导出数据库中的数据并且发送数据到邮箱

    1.发送邮件脚本 #coding=utf-8 import smtplib from email.header import Header from email.mime.text import MI ...

  4. jsp案例--展示数据库中的数据

    一.什么是jsp? JAVA SERVER PAGES java的动态网页,servlet用来获取数据处理业务,擅长处理与java代码有关的内容.jsp展示数据,擅长处理与html有关的内容. 二.如 ...

  5. jsp+servlet上传excel并将数据导入到数据库表的实现方法

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  6. jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上

    jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上 1.JavaBean的使用 package com.zheng; public class BookBean { ...

  7. Java利用POI导入导出Excel中的数据

         首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地 ...

  8. 如何将存储在MongoDB数据库中的数据导出到Excel中?

    将MongoDB数据库中的数据导出到Excel中,只需以下几个步骤: (1)首先,打开MongoDB安装目录下的bin文件夹,(C:\Program Files (x86)\MongoDB\Serve ...

  9. [软件共享]将数据库中的数据导出为SQL脚本

    可以直接将数据库中的数据导出为脚本,并可以自己设置过滤条件.使用方法很简单,不在多说了.下面是软件截图.123 下载:http://files.cnblogs.com/pw/mssql2.rar

随机推荐

  1. How to vi

    h:left,j:down,k:up,l:right.wq #write and quitx #cut one letterdd#cut one line/ #searchs/a/b/ #replac ...

  2. 安装mysql zip5.7版--安裝

    一直以来都习惯了使用MySQL安装文件(.exe),今天下载了一个.zip版本的MySQL,安装过程中遇到了一些问题,如下: 1.在MySQL官网上(http://dev.mysql.com/down ...

  3. aop通配符语法

    *.表示通配包名  *. == com. com.rl.ecps.service == *.*.*.*. ..表示 通配任何包及其子包   例如 com.. ==com. *.*.*. com.rl. ...

  4. UVA 11988 Beiju Text

    https://vjudge.net/problem/UVA-11988 题目 你有一个破损的键盘.键盘上所有的键都可以正常工作,但有时候Home键或者End键会自动按下.你并不知道键盘存在这一问题, ...

  5. Nginx 热部署最版本

    L10 进入nginx里的sbin目录 拷贝原先的做备份 cp nginx nginx.old 然后将已经编译好的nginx二进制文件复制到sbin目录下并覆盖原有的二进制文件 kill -USR2 ...

  6. django---一对多和多对多字段的操作训练

    建表准备: django项目models.py建表 from django.db import models class Myclass(models.Model): cname = models.C ...

  7. Python操作Memcached

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...

  8. [WC2018]即时战略——动态点分治(替罪羊式点分树)

    题目链接: [WC2018]即时战略 题目大意:给一棵结构未知的树,初始时除1号点其他点都是黑色,1号点是白色,每次你可以询问一条起点为白色终点任意的路径,交互库会自动返回给你这条路径上与起点相邻的节 ...

  9. SpringMVC 拦截器使用说明

    spring-content.xml <!-- 配置用于session验证的拦截器 --> <!-- 如果有多个拦截器满足拦截处理的要求,则依据配置的先后顺序来执行 --> & ...

  10. MT【307】周期数列

    (2017浙江省数学竞赛) 设数列$\{a_n\}$满足:$|a_{n+1}-2a_n|=2,|a_n|\le2,n\in N^+$证明:如果$a_1$为有理数,则从某项后$\{a_n\}$为周期数列 ...