zoukankan      html  css  js  c++  java
  • java操作Excel之POI(5)利用POI实现使用模板批量导出数据

    后台导出方法:

    在源文件夹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:

  • 相关阅读:
    数据库设计
    vs2013怎么删除代码前的小箭头
    win 7系统自带的截图工具在哪里?如何使用?
    SQL Server不允许保存更改
    多个分组中取每个分组中最新的一条数据
    批量向数据库多张表导入数据的实现
    判断字符串是只是数字
    Mac下查看端口占用情况
    Mac上使用Docker Desktop安装Kubernetes
    关于Lombok框架子类继承时EqualsAndHashCode注解的callSuper取值的思考
  • 原文地址:https://www.cnblogs.com/tenWood/p/6426906.html
Copyright © 2011-2022 走看看