【JAVA IO】EasyExcel 在流数据的导入导出

717 阅读1分钟

根据数据生成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…