excel导出自定义多页签和表头

public void exportFormDataGatherExcel(FormDataGatherPageReqVO reqVO, HttpServletResponse response) {
    try {
        response.setCharacterEncoding("utf-8");
        String fileName =  "repeatedWrite" + System.currentTimeMillis() + ".xlsx";
        response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
        // 这里 指定文件
        try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).autoCloseStream(false).build()) {
            // 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来。这里最终会写到5个sheet里面
            for (int i = 0; i < 5; i++) {
                List<String> headList = new ArrayList<>();
                headList.add("h1");
                headList.add("h2");
                headList.add("h3");
                headList.add("h4");

                // 每次都要创建writeSheet 这里注意必须指定sheetNo 而且sheetName必须不一样。这里注意DemoData.class 可以每次都变,我这里为了方便 所以用的同一个class
                // 实际上可以一直变
                WriteSheet writeSheet = EasyExcel.writerSheet(i, "模板" + i).build();
                writeSheet.setHead(head(headList));
                // 分页去数据库查询数据 这里可以去数据库查询每一页的数据
                List<List<String>> data = new ArrayList<>();
                List<String> lista = new ArrayList<>();
                lista.add("C1");
                lista.add("C2");
                lista.add("C3");
                lista.add("C4");
                lista.add("C5");
                data.add(lista);

                excelWriter.write(data, writeSheet);
            }
        }
        response.addHeader("Content-Disposition", "inline;filename=" + new String(fileName.getBytes("utf-8"), "iso8859-1"));
        response.setContentType("application/vnd.ms-excel;charset=UTF-8");

    } catch (Exception e) {
        e.printStackTrace();
        log.error(e.getMessage(),e);
    }

}

public static List<List<String>> head(List<String> headList) { List<List<String>> list = new ArrayList<>(); for (String value : headList) { List<String> head = new ArrayList<>(); head.add(value); list.add(head); } return list; }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值