根据数据生成excel流后,可以导出到本地文件,如下
private OutputStream buildExcelOutputStream(List<ExcelSheetContent> contents) {
try {
@Cleanup ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ExcelWriter writer = EasyExcelFactory.write(outputStream).build();
// 写数据
IntStream.range(0, contents.size()).forEachOrdered(i -> {
ExcelSheetContent excelSheetContent = contents.get(i);
// 创建一个表格,用于 Sheet 中使用
WriteSheet sheet1 = new WriteSheet();
sheet1.setSheetName(excelSheetContent.getSheetName());
sheet1.setSheetNo(i);
WriteTable table = new WriteTable();
table.setTableNo(1);
table.setHead(excelSheetContent.getTableHeads());
writer.write(excelSheetContent.getTableData(), sheet1, table);
});
writer.finish();
return outputStream;
} catch (Exception e) {
log.error(e.getMessage());
return null;
}
}
@Data
public class ExcelSheetContent {
/**
* 表名
*/
private String sheetName;
/**
* 表头,可以是复杂表头
*/
private List<List<String>> tableHeads;
/**
* 表数据
*/
private List<List<Object>> tableData;
}
复杂表头和内容的生成参考:blog.csdn.net/jie87344099…