不同的sheet页,使用POI和EasyExcel生成的sheet页,合并导出。先用EasyExcel生成,再获取Workbook对象去用POI生成sheet页。
// 使用EasyExcel生成sheet页
ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), Object.class).build();
...
...
// 获取EasyExcel的workbook对象,用于poi调用
Workbook workbook = excelWriter.writeContext().writeWorkbookHolder().getCachedWorkbook();
// 使用POI生成sheetye
Sheet sheet = workbook.createSheet(sheetName);
workbook.setSheetOrder(sheetName, 0); // 设置sheet页位置
...
...
excelWriter.finish(); // 最后调用EasyExcel的finish()方法
注意点:EasyExcel.write()方法默认生成SXSSFWorkbook对象,如果要进行简单绘图,调用绘图对象,则要使用XSSFWorkbook对象。
// 创建绘图对象,并转换为XSSFDrawing类型
XSSFDrawing drawing = (XSSFDrawing) sheet.createDrawingPatriarch();
// 创建直线 可以设置线段在单位格中间,长64为一格,宽32为一格
XSSFClientAnchor anchor = drawing.createAnchor(firstXOffset, firstYOffset, lastXOffset, lastYOffset, firstColumn, firstRow, lastColumn, lastRow);
生成ExcelWriter对象时设置 inMemory(true) 参数,生成XSSFWorkbook对象。
ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), Object.class)
.inMemory(true) // 设置后生成 XSSFWorkbook 对象
.build();