当前位置:   article > 正文

EasyExcel的简单应用——根据模板创建写入文件_easyexcel读取模板写入数据

easyexcel读取模板写入数据

 首先,需要在pom中添加依赖:

  1. <dependency>
  2. <groupId>com.alibaba</groupId>
  3. <artifactId>easyexcel</artifactId>
  4. <version>3.0.5</version>
  5. </dependency>

开始写入文件 

  1. @Slf4j
  2. @RunWith(SpringRunner.class)
  3. @SpringBootTest(classes = TestProject.class)
  4. public class DemoTest {
  5. @Test
  6. public void test() {
  7. // 注意:模板需要存在
  8. String tempFileName = "D:\\Program Files\\IDEA Project\\excel\\easyexcel_test.xlsx";
  9. // 目标文件
  10. String fileName = "D:\\Program Files\\IDEA Project\\excel\\" + "测试-01" + ".xlsx";
  11. File directory = new File("D:\\Program Files\\IDEA Project\\excel\\");
  12. // 如果存放目标文件路径不存在,则创建文件夹
  13. if (!directory.exists()) {
  14. directory.mkdirs();
  15. }
  16. // 根据模板写入数据,如果目标文件不存在,则自动创建文件
  17. ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(tempFileName).build();
  18. // 在名为“练习”的工作簿中写入数据,如果模板中不存在练习工作簿,则会在目标文件中自动创建
  19. WriteSheet writeSheet = EasyExcel.writerSheet("练习").build();
  20. // 垂直写入数据,如果要水平写入,将VERTICAL替换为HORIZONTAL
  21. FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.VERTICAL).build();
  22. // 需要写入的Map数据,注意,如果有多个list,模板中必须有前缀,比如这里的data1与data2
  23. Map<String, List<Stu>> stuMap = new HashMap<>();
  24. // data1()与data2()为写入的数据list
  25. // 注意:写入的数据一定不要超过文件留有的位置,否则会发生覆盖的错误结果。
  26. // 比如,模板里面我给data1只留了一行,那么垂直写入时,data1的数据不能超过一行。
  27. stuMap.put("data1", data1(1));
  28. stuMap.forEach((k, v) -> excelWriter.fill(new FillWrapper(k, v), fillConfig, writeSheet));
  29. Map<String, List<App>> appMap = new HashMap<>();
  30. appMap.put("data2", data2(4));
  31. appMap.forEach((k, v) -> excelWriter.fill(new FillWrapper(k, v), fillConfig, writeSheet));
  32. // 结束写入
  33. excelWriter.finish();
  34. }
  35. @Data
  36. @Builder
  37. public static class Stu {
  38. private String name;
  39. private Double age;
  40. private String sex;
  41. }
  42. private List<Stu> data1(int i) {
  43. List<Stu> stus = new LinkedList<>();
  44. for (int k = 0; k < i; k++) {
  45. Stu stu = Stu.builder()
  46. .name("lucy")
  47. .age(k + 23.5)
  48. .sex("男")
  49. .build();
  50. stus.add(stu);
  51. }
  52. return stus;
  53. }
  54. private List<App> data2(int i) {
  55. List<App> apps = new LinkedList<>();
  56. for (int k = 0; k < i; k++) {
  57. App app = App.builder()
  58. .name("lu")
  59. .age(k + 23)
  60. .address("地址")
  61. .build();
  62. apps.add(app);
  63. }
  64. return apps;
  65. }
  66. @Data
  67. @Builder
  68. public static class App {
  69. private String name;
  70. private Integer age;
  71. private String address;
  72. }
  73. }

模板:easyexcel_test.xlsx

目标文件最后结果:测试-01.xlsx

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/590436
推荐阅读
相关标签
  

闽ICP备14008679号