java操作Excel之POI(4)利用POI实现数据的批量导出
2024-10-11 07:34:52
后台导出方法:
/**
* 后台导出方法
* 利用POI实现数据的批量导出
*/
public String export() throws Exception{
Connection con = null;
try{
con = dbUtil.getCon();
Workbook wb = new HSSFWorkbook();
String headers[] = {"编号", "姓名", "电话", "Email", "QQ"};
ResultSet rs = userDao.userList(con, null);
ExcelUtil.fillExcelData(rs, wb, headers); //把wb以流的形式输出
ResponseUtil.export(ServletActionContext.getResponse(), wb, "导出Excel.xls");
}catch(Exception e){
e.printStackTrace();
}finally{
try{
dbUtil.closeCon(con);
dbUtil.closeRs(rs);
}catch(Exception e){
e.printStackTrace();
}
} return null;
}
处理excel的Util:
/**
* 处理Excel的util
*/
public class ExcelUtil{ public static void fillExcelData(ResultSet rs, Workbook wb, String[] headers) throws Exception{
int rowIndex = 0;
Sheet sheet = wb.createSheet();
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());
}
}
}
}
ResponseUtil以流的形式导出Workbook:
/**
* ResponseUtil相应util
*/
public class ResponseUtil{
public static void write(HttpServletResponse response, Object o) throws Exception{
response.setContentType("text/html;charset=utf-8");
PrintWriter pw = response.getWriter();
pw.print(o.toString());
pw.flush();
pw.close();
} /**
*导出Excel
* fileName: 导出的文件名
*/
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();
}
}
导出的Excel:
最新文章
- java基础 绘图技术.坦克大战 之java绘图坐标体系(一)
- TCPView for Windows
- 必须要会的技能(一) 如何实现设计时Binding
- 1.4---字符串空格变成20%(CC150)
- ubuntu修改源列表sourcelist的方法
- innodb的锁到底占用多少内存
- 灰色预测模型 c# 算法实现
- 交互式的Flash图表和仪表控件AnyChart
- 前端工程搭建NodeJs+gulp+bower
- C++空类以及没有成员变量的类的大小
- MBProgressHUD not showing
- webview加载网页加载不出来
- .NET面向对象特性之多态
- 用cas来实现php的单点登陆
- MySQL随记(二)
- XX-NET史上最详细完整教程
- Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem A - B
- [JetBrains注册] 利用教育邮箱注册JetBrains产品(pycharm、idea等)的方法
- PHP 正则表达式--转(川山甲)
- 高精度N的阶乘-N!