EasyExcel是Java中常用的一个操作Excel中库。
填充
多行填充
模板示例:
| 姓名 | 时长 |
|---|---|
| {person.name} | {person.age} |
| 个人汇总 | {total} |
| {business.business_name} | {business.business_age} |
| 企业汇总 | {business_total} |
示例代码:
package com.example.test;import com.alibaba.excel.EasyExcel;import com.alibaba.excel.ExcelWriter;import com.alibaba.excel.write.metadata.WriteSheet;import com.alibaba.excel.write.metadata.fill.FillConfig;import com.alibaba.excel.write.metadata.fill.FillWrapper;import lombok.Data;import lombok.extern.slf4j.Slf4j;import org.junit.Test;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class EasyExcelTest {private List<PersonData> calcPersonData() {ArrayList<PersonData> persons = new ArrayList<PersonData>();PersonData person = new PersonData();person.setName("JJC");person.setAge(18);persons.add(person);person.setName("JJC");person.setAge(18);persons.add(person);PersonData person1 = new PersonData();person1.setName("Dan");person1.setAge(20);persons.add(person1);return persons;}private List<BusinessData> calcBusinessData() {ArrayList<BusinessData> result = new ArrayList<BusinessData>();BusinessData business = new BusinessData();business.setBusiness_age(2);business.setBusiness_name("ZJT");result.add(business);BusinessData business1 = new BusinessData();business1.setBusiness_name("TFH");business1.setBusiness_age(3);result.add(business1);return result;}@Testpublic void test(){final List<PersonData> personData = calcPersonData();final List<BusinessData> businessData = calcBusinessData();final String templatePath = "模板excle地址.xlsx"; // 模板excel的地址final String filePath = "目标excel地址.xlsx"; // 目标excel地址ExcelWriter excelWriter = EasyExcel.write(filePath).withTemplate(templatePath).build();WriteSheet writeSheet = EasyExcel.writerSheet().build();FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();final int total = personData.stream().mapToInt(PersonData::getAge).reduce(0, Integer::sum);final int business_total = businessData.stream().mapToInt(BusinessData::getBusiness_age).reduce(0, Integer::sum);Map<String, Object> map = new HashMap<String,Object>();map.put("total",total);excelWriter.fill(new FillWrapper("person",personData),fillConfig,writeSheet);excelWriter.fill(map,fillConfig,writeSheet);excelWriter.fill(new FillWrapper("business",businessData),fillConfig,writeSheet);Map<String, Object> map1 = new HashMap<String,Object>();map1.put("business_total",business_total);excelWriter.fill(map1, fillConfig, writeSheet);excelWriter.finish();}}@Dataclass BusinessData {private String business_name;private int business_age;}@Dataclass PersonData {private String name;private int age;}
