导语
本文是解决空白表格设置格式为文本并不需要表格中有内容,适合导出编写模版的需求。我在网上找了一圈也没具体的解决方案,有很多只能修改有文本数据的文章而且大多数都是复制粘贴的,并不能解决空白表格格式修改的问题。在这分享一下我的解决方案希望可以帮到大家!
解决方式
在SheetWriteHandler的实现方法中,在afterSheetCreate方法中创建表格之前加入表格的格式,即可实现具体代码如下:
public class CustomSheetWriteHandler implements SheetWriteHandler {
@Override
public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {}
@Override
public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
for (int i = 0; i < 100; i++) {
// 设置为文本格式
SXSSFSheet sxssfSheet = (SXSSFSheet) writeSheetHolder.getSheet();
CellStyle cellStyle = writeWorkbookHolder.getCachedWorkbook().createCellStyle();
// 49为文本格式
cellStyle.setDataFormat((short) 49);
// i为列,一整列设置为文本格式
sxssfSheet.setDefaultColumnStyle(i, cellStyle);
}
}
}
最后在使用的时候不要忘了注册改样式,可参考以下代码注册
EasyExcel.write(filePath).head(head(list)).sheet("模板")
.registerWriteHandler(new CustomSheetWriteHandler())
.registerWriteHandler(new CustomCellWriteHandler()).doWrite(new ArrayList<>(0));
实现效果
可以看到一整列都修改为了文本格式,具体如下图: