EasyExcel设置空单元格格式为文本

解决方式一(亲测有效)

在SheetWriteHandler的实现方法中,在afterSheetCreate方法中创建表格之前加入表格的格式,即可实现具体代码如下:

public class CustomSheetWriteHandler implements SheetWriteHandler {

    @Override

    public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {}

    @Override

    public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {

        //100列

        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);

        }

    }

}

二、设置含有数据的单元格的格式为文本

如果只是完成上面第一步,会发现导出的模板中,含有数据的单元格的格式还是常规,当重新输入后,日期又自适应,变成不是文本字符串了,所以我这里还是设置了含有数据的单元格的格式为文本只需要在导出模板的实体类的字段上加上注解即可:@ContentStyle(dataFormat = 49)

@Data

public class ExpenseTemplateModel {

  /**

    * 所属年月

    */

  @HeadFontStyle(color= 10)

  @ExcelProperty(value = "所属年月")

  @ContentStyle(dataFormat = 49)

  private String expenseMonth;

  /**

    * 会计主体

    */

  @HeadFontStyle(color= 10)

  @ExcelProperty(value = "会计主体")

  @ContentStyle(dataFormat = 49)

  private String borrowerName;

}

最后在使用的时候不要忘了注册改样式,可参考以下代码注册

EasyExcel.write(filePath).head(head(list)).sheet("模板")

                .registerWriteHandler(new CustomSheetWriteHandler())

                .registerWriteHandler(new CustomCellWriteHandler()).doWrite(new ArrayList<>(0));

实现效果

可以看到一整列都修改为了文本格式,具体如下图:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容