一般的excel示例,都是写入列表数据到excel,格式上有表头,内容使用List集合来填充。今天遇到的需求有点不一样,它也是需要写入excel,但是开头的内容并不是列表,而是一个类似于摘要的部分,后面才是表格。大致结构如下:
这个需求,就没有办法使用常见的excel操作了。解决办法就是使用模板来填充。我们需要建立一个excel模板文件,变化的部分使用占位符。
如下所示,我们建立一个模板文件:
模板中,前面部分可以使用map的数据来填充,所以占位符是这样{checkTime}。后面的循环列表部分使用{.name},{.result},{.desc}来填充。
上代码:
pom.xml
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel-core</artifactId>
<version>3.2.1</version>
</dependency>
列表实体类:
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class CheckRecord {
private String name;
private String result;
private String desc;
}
测试类:
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 java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class RecordExportTest {
private static final String RECORD_TEMPLATE = "conf/record-template.xlsx";
public static void main(String[] args) {
String filePath = "e:\\record-" + System.currentTimeMillis() + ".xlsx";
Map<String, Object> summary = new HashMap<>();
summary.put("checkTime", "2023-04-18");
summary.put("checkResult", "success");
summary.put("versionInfo", "v1.0.0");
List<CheckRecord> list = new ArrayList<>();
list.add(new CheckRecord("disk status", "success", "磁盘状态"));
list.add(new CheckRecord("network status", "success", "网络状态"));
boolean isOk = saveData(filePath, summary, list);
System.out.println("write excel : " + isOk);
}
private static boolean saveData(String filePath, Map<String, Object> summary, List<CheckRecord> list) {
try (ExcelWriter excelWriter = EasyExcel.write(filePath).withTemplate(RECORD_TEMPLATE).build()) {
WriteSheet writeSheet = EasyExcel.writerSheet().build();
FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build();
excelWriter.fill(list, fillConfig, writeSheet);
excelWriter.fill(summary, writeSheet);
excelWriter.finish();
}
return true;
}
}
把前面准备的record-template.xlsx文件按照代码需要放入项目conf目录下,然后运行示例,生成的excel文件如下:
有了这样的模板填充,我们的excel可以制作的更复杂。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)