EasyExcel是Java中常用的一个操作Excel中库。

填充

多行填充

模板示例:

姓名 时长
{person.name} {person.age}
个人汇总 {total}
{business.business_name} {business.business_age}
企业汇总 {business_total}

示例代码:

  1. package com.example.test;
  2. import com.alibaba.excel.EasyExcel;
  3. import com.alibaba.excel.ExcelWriter;
  4. import com.alibaba.excel.write.metadata.WriteSheet;
  5. import com.alibaba.excel.write.metadata.fill.FillConfig;
  6. import com.alibaba.excel.write.metadata.fill.FillWrapper;
  7. import lombok.Data;
  8. import lombok.extern.slf4j.Slf4j;
  9. import org.junit.Test;
  10. import java.util.ArrayList;
  11. import java.util.HashMap;
  12. import java.util.List;
  13. import java.util.Map;
  14. public class EasyExcelTest {
  15. private List<PersonData> calcPersonData() {
  16. ArrayList<PersonData> persons = new ArrayList<PersonData>();
  17. PersonData person = new PersonData();
  18. person.setName("JJC");
  19. person.setAge(18);
  20. persons.add(person);
  21. person.setName("JJC");
  22. person.setAge(18);
  23. persons.add(person);
  24. PersonData person1 = new PersonData();
  25. person1.setName("Dan");
  26. person1.setAge(20);
  27. persons.add(person1);
  28. return persons;
  29. }
  30. private List<BusinessData> calcBusinessData() {
  31. ArrayList<BusinessData> result = new ArrayList<BusinessData>();
  32. BusinessData business = new BusinessData();
  33. business.setBusiness_age(2);
  34. business.setBusiness_name("ZJT");
  35. result.add(business);
  36. BusinessData business1 = new BusinessData();
  37. business1.setBusiness_name("TFH");
  38. business1.setBusiness_age(3);
  39. result.add(business1);
  40. return result;
  41. }
  42. @Test
  43. public void test(){
  44. final List<PersonData> personData = calcPersonData();
  45. final List<BusinessData> businessData = calcBusinessData();
  46. final String templatePath = "模板excle地址.xlsx"; // 模板excel的地址
  47. final String filePath = "目标excel地址.xlsx"; // 目标excel地址
  48. ExcelWriter excelWriter = EasyExcel.write(filePath).withTemplate(templatePath).build();
  49. WriteSheet writeSheet = EasyExcel.writerSheet().build();
  50. FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
  51. final int total = personData.stream().mapToInt(PersonData::getAge)
  52. .reduce(0, Integer::sum);
  53. final int business_total = businessData.stream().mapToInt(BusinessData::getBusiness_age)
  54. .reduce(0, Integer::sum);
  55. Map<String, Object> map = new HashMap<String,Object>();
  56. map.put("total",total);
  57. excelWriter.fill(new FillWrapper("person",personData),fillConfig,writeSheet);
  58. excelWriter.fill(map,fillConfig,writeSheet);
  59. excelWriter.fill(new FillWrapper("business",businessData),fillConfig,writeSheet);
  60. Map<String, Object> map1 = new HashMap<String,Object>();
  61. map1.put("business_total",business_total);
  62. excelWriter.fill(map1, fillConfig, writeSheet);
  63. excelWriter.finish();
  64. }
  65. }
  66. @Data
  67. class BusinessData {
  68. private String business_name;
  69. private int business_age;
  70. }
  71. @Data
  72. class PersonData {
  73. private String name;
  74. private int age;
  75. }