• easyExcel 按照模板设置到处excel内容


    1.引入

    1. <!--easyexcel -->
    2. <dependency>
    3. <groupId>com.alibaba</groupId>
    4. <artifactId>easyexcel</artifactId>
    5. <version>3.3.1</version>
    6. </dependency>
    7. <dependency>
    8. <groupId>com.github.whvcse</groupId>
    9. <artifactId>easy-captcha</artifactId>
    10. <version>1.6.2</version>
    11. </dependency>

    2.设置模板  打印模板.xlsx

    3.相关代码

    1. @ApiOperation(value = "获取excle,根据excle模板")
    2. @GetMapping("getExcel")
    3. public void getExcel(HttpServletResponse response) throws IOException {
    4. response.setContentType("application/vnd.ms-excel");
    5. response.setCharacterEncoding("UTF-8");
    6. response.setHeader("Content-disposition", "attachment;filename=" + DateUtil.currentTimeSeconds() + ".xlsx");
    7. //指定excel模板文件
    8. // String templateFileName = "C:\\Users\\13628\\Desktop\\打印模板.xlsx";
    9. ResourceLoader resourceLoader = new DefaultResourceLoader();
    10. InputStream templateFileInputStream = resourceLoader.getClassLoader().getResourceAsStream("打印模板.xlsx");
    11. //指定填充后保存excel的文件
    12. // String fileName = "C:\\Users\\13628\\Desktop\\demo.xlsx";
    13. //数据
    14. Map<String, Object> map = new HashMap<String, Object>();
    15. map.put("payTime", "2023-08-09");
    16. List<Map<String, Object>> list = new ArrayList>();
    17. for (int i = 0; i < 5; i++) {
    18. Map<String, Object> map1 = new HashMap<String, Object>();
    19. map1.put("gname", "测试"+i);
    20. map1.put("price", 2.38+i);
    21. map1.put("relPrice", 3.38+i);
    22. list.add(map1);
    23. }
    24. map.put("records", list);
    25. //导出
    26. ByteArrayOutputStream out = new ByteArrayOutputStream();
    27. try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(templateFileInputStream).build()){
    28. WriteSheet writeSheet = EasyExcel.writerSheet().build();
    29. // 这里注意 入参用了forceNewRow 代表在写入list的时候不管list下面有没有空行 都会创建一行,然后下面的数据往后移动。默认 是false,会直接使用下一行,如果没有则创建。
    30. // forceNewRow 如果设置了true,有个缺点 就是他会把所有的数据都放到内存了,所以慎用
    31. // 简单的说 如果你的模板有list,且list不是最后一行,下面还有数据需要填充 就必须设置
    32. //forceNewRow=true 但是这个就会把所有数据放到内存 会很耗内存
    33. // 如果数据量大 list不是最后一行 参照下一个
    34. FillConfig fillConfig =
    35. FillConfig.builder().forceNewRow(Boolean.TRUE).build();
    36. excelWriter.fill(map, writeSheet);
    37. excelWriter.fill(new FillWrapper("records", list), fillConfig, writeSheet);
    38. }
    39. }

    4.apifox调试,返回文件流,点击下载即可下载文件

    下载后文件

  • 相关阅读:
    Aero:用rust编写的新现代操作系统
    实战ResNet:CIFAR-10数据集分类
    ANR 原理及实践
    【AI核心能力】第2讲 机器学习初探
    (附源码)ssm失物招领平台 毕业设计 271621
    mycat的安装及使用
    树上查询SPOJQTREE4
    电脑重装系统后Win7打印机无法打印该如何处理?
    什么是网络爬虫,爬虫的机制是那些
    Unity数字孪生教程:系统如何架构?
  • 原文地址:https://blog.csdn.net/qq_32784303/article/details/133749430