在处理大量数据并将其导出为Excel文件时,Java开发者经常会面临如何高效且美观地组织信息的问题。本文将基于EasyExcel
库,展示一个简短的代码示例,以说明如何创建包含多个工作表(Sheets)的Excel文件,并设置单元格边框线以及实现列宽的自动调整。
创建多Sheet Excel文件
使用EasyExcel
,我们可以通过调用write()
方法和writerSheet()
方法来指定不同Sheet的数据源及其头部定义。下面是一个简化版的代码片段,它演示了如何从给定文件夹路径读取数据,然后将这些数据写入到两个不同的Sheet中,分别命名为“Codes
”和“Errors
”。
private void writeExcelDemo() {
String outputPath = "test.xlsx";
List<QrCodeData> qrCodes = new ArrayList<>();
List<ErrorData> errors = new ArrayList<>();
processFolderRecursively(folder, qrCodes, errors);
try (ExcelWriter excelWriter = EasyExcel.write(outputPath)
.registerWriteHandler(this.getHorizontalCellStyleStrategy())
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.build()) {
WriteSheet codesSheet = EasyExcel.writerSheet("Codes").head(QrCodeData.class).build();
excelWriter.write(qrCodes, codesSheet);
WriteSheet errorsSheet = EasyExcel.writerSheet("Errors").head(ErrorData.class).build();
excelWriter.write(errors, errorsSheet);
} catch (Exception e) {
log.error("输出Excel异常", e);
}
}
/**
* 设置单元格样式
*
* @return HorizontalCellStyleStrategy
*/
private HorizontalCellStyleStrategy getHorizontalCellStyleStrategy() {
// 设置边框样式
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
// 设置边框
BorderStyle borderStyle = BorderStyle.THIN;
headWriteCellStyle.setBorderTop(borderStyle);
headWriteCellStyle.setBorderBottom(borderStyle);
headWriteCellStyle.setBorderLeft(borderStyle);
headWriteCellStyle.setBorderRight(borderStyle);
contentWriteCellStyle.setBorderTop(borderStyle);
contentWriteCellStyle.setBorderBottom(borderStyle);
contentWriteCellStyle.setBorderLeft(borderStyle);
contentWriteCellStyle.setBorderRight(borderStyle);
// 创建水平样式策略
return new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
}
以上代码基于
easyexcel 4.0.3
版本。
设置单元格边框线
为了使生成的Excel表格更加专业,我们可以为单元格添加边框线。这可以通过注册自定义的样式处理器HorizontalCellStyleStrategy
来实现。在上面的代码中,this.getHorizontalCellStyleStrategy()
应该返回一个实现了此类功能的对象,确保所有单元格都有清晰的边界。
列宽自动调整策略
为了让表格内容更易读,EasyExcel
提供了LongestMatchColumnWidthStyleStrategy
这样的策略(你也可以参考这个类自定义自己的列宽策略,比如设置一个最宽值等等),用于根据最长匹配原则自动调整各列宽度。通过在构建ExcelWriter
时注册此策略,可以保证即使文本长度不一,也能获得良好的显示效果。
综上所述,借助EasyExcel
的强大功能,开发者不仅能够轻松地创建复杂的Excel文档,还能对文档样式进行细致控制,从而满足各种业务需求。
(END)