EasyExcel 官网观看建议
EasyExcel 学习随笔
看着easyxcel 真的一脸茫然,花2天才搞懂阅读思路
官网
首先官方 只推荐看目录和 api 然后拉代码,下来阅读。
几个小的点
读取中遇到到 空行 默认会忽略,继续读取
写的时候遇到空行 需要调用relativeHeadRowIndex(inedx )
写出的 的模版需要增加数据 在读的时候 需要注意字体
复杂的抬头需要 在实体类注解上面设置
合并单元格,要看多行头 内容
一张表有多个表单 要去看 无对象存储,自己写 读取逻辑
实现ReadListener
onException 后,会自动捕获所有异常,
凌乱笔记
复杂头
public void complexHeadWrite() {
String fileName = TestFileUtil.getPath() + "complexHeadWrite" + System.currentTimeMillis() + ".xlsx";
System.out.println(fileName);
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
EasyExcel.write(fileName, ComplexHeadData.class).sheet("模板").doWrite(data());
}
public class ComplexHeadData {
@ExcelProperty({"主标题", "字符串标题"})
private String string;
@ExcelProperty({"主标题", "日期标题"})
private Date date;
@ExcelProperty({"主标题", "数字标题"})
private Double doubleData;
}
多对象写入
/**测试多对象写入*/
public static void writeExcel01() {
String fileName = getPath1();
ExcelWriter excelWriter = EasyExcel.write(fileName).excelType(ExcelTypeEnum.XLSX).build();
WriteSheet writeSheet = EasyExcel.writerSheet("模板").needHead(Boolean.FALSE).build();
List<DemoData> demoDataList = writeExcel.data1();
// 需要表头设置为true,WriteTable一些属性会继承自WriteSheet
WriteTable writeTable = EasyExcel.writerTable(1).head(DemoData.class).needHead(Boolean.TRUE)
.registerWriteHandler(new CustomMergeStrategy(demoDataList.stream().map(DemoData::getString).collect(Collectors.toList()), 0))
.registerWriteHandler(new CustomMergeStrategy(demoDataList.stream().map(o -> o.getDoubleData()+"").collect(Collectors.toList()), 2))
.build();
excelWriter.write(demoDataList, writeSheet, writeTable);
//设置空行 relativeHeadRowIndex
WriteTable writeTable1 = EasyExcel.writerTable(2).head(DemoData.class).needHead(Boolean.TRUE).relativeHeadRowIndex(1).build();
excelWriter.write(writeExcel.data1(), writeSheet, writeTable1);
excelWriter.finish();
}