您的位置:首页 > 编程语言 > Java开发

java操作Excel之POI(5)利用POI实现使用模板批量导出数据

2017-02-21 23:18 1231 查看
后台导出方法:

在源文件夹src下面放个准备好的模板:/com/cy/template/userExportTemplate.xls,这个模板有头部一行;

1 /**
2 *    后台导出方法
3 *    利用POI实现使用模板批量导出数据
4 */
5 public String export2() throws Exception{
6     Connection con = null;
7     try{
8         con = dbUtil.getCon();
9         ResultSet rs = userDao.userList(con, null);
10         Workbook wb = ExcelUtil.fillExcelDataWithTemplate(rs, "userExportTemplate.xls");
11
12         //把wb以流的形式输出
13         ResponseUtil.export(ServletActionContext.getResponse(), wb, "利用模板导出Excel.xls");
14     }catch(Exception e){
15         e.printStackTrace();
16     }finally{
17         try{
18             dbUtil.closeCon(con);
19             dbUtil.closeRs(rs);
20         }catch(Exception e){
21             e.printStackTrace();
22         }
23     }
24
25     return null;
26 }


处理Excel的Util:

先读取这个模板,创建一个工作簿Workbook,然后塞数据,再返回这个工作簿,相当于对模板做了修改。

1 /**
2 *    处理Excel的util
3 */
4 public class ExcelUtil{
5
6     public static Workbook fillExcelDataWithTemplate(ResultSet rs, String templateFileName) throws Exception{
7         InputStream is = ExcelUtil.class.getResourceAsStream("/com/cy/template/"+templateFileName);
8         POIFSFileSystem pfs = new POIFSFileSystem(is);
9         Workbook wb = new HSSFWorkbook(pfs);
10         Sheet sheet = wb.getSheetAt(0);                 //获取模板的第一个sheet页
11         int cellNums = sheet.getRow(0).getLastCellNum(); //获取列数
12         int rowIndex = 1;                                //从第二行开始
13         Row row = null;
14         while(rs.next()){
15             row = sheet.createRow(rowIndex++);
16             for(int i=0; i<cellNums; i++){
17                 row.createCell(i).setCellValue(rs.getObject(i).toString());
18             }
19         }
20
21         return wb;
22     }
23 }


导出的Excel:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: