easyexcel 根据JAVA对象导出Excel模版,请问如何将某个列全部设置为文本格式

1tu0hz3e  于 2022-12-31  发布在  Java
关注(0)|答案(2)|浏览(830)

版本:3.0.2
Easy-Excel 3.0.2

问题:根据JAVA对象导出Excel模版,请问如何将某个列全部设置为文本格式,
找了很多文档都没解决,我太菜了求助。现在填写我导出的模版 填写日期会变成2022/10/10 我想填写的时候是 2022-10-10

public class CustomWriteHandler implements CellWriteHandler {
@OverRide
public void afterCellDispose(CellWriteHandlerContext context) {
final Cell cell = context.getCell();
final CellStyle cellStyle = context.getWriteWorkbookHolder().getWorkbook().createCellStyle();
final DataFormat dataFormat = context.getWriteWorkbookHolder().getWorkbook().createDataFormat();
final short format = dataFormat.getFormat("@");
// 设置为文本
cellStyle.setDataFormat(format);
cell.setCellStyle(cellStyle);
}
}

太难了 找了很多文档都没解决问题 求助。

nbnkbykc

nbnkbykc1#

方法1:pojo加个属性,String类型的,自己转好日期格式写进去。原来Date类型的不要写入excel
方法2:自定义converter

0ve6wy6x

0ve6wy6x2#

方法1:pojo加个属性,字符串类型的,自己转好日期格式写。原来日期类型的不要写入excel 方法2:自定义转换器

你这种只是导出数据的时候设置某个row的某个cell吧 ,我是想让整个cell列全部是文本。 查了半天找到一个
public class CellWriteHandler implements SheetWriteHandler {

@Override
public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder,
                             WriteSheetHolder writeSheetHolder) {
    SXSSFSheet sxssfSheet = (SXSSFSheet) writeSheetHolder.getSheet();
    final String sheetName = writeSheetHolder.getSheet().getSheetName();
    final Integer cellNumber = ExcelFileDownLoadConfig.getCellNumber(sheetName);
    for (int i = 0; i < cellNumber; i++) {
        final CellStyle cellStyle = writeWorkbookHolder.getCachedWorkbook().createCellStyle();
        cellStyle.setDataFormat((short) 49);
        sxssfSheet.setDefaultColumnStyle(i, cellStyle);
    }
}

不过这里的cell列的个数 需要自己配置

相关问题