[alibaba/easyexcel]导出时,能否提供一个设置列单元格格式的api

2024-05-16 903 views
6

建议描述

场景一: 业务场景需要导出动态列的模板,通常的可实现方案是调用 write方法生成模板文件。但在该文件填写数据时,涉及到较长数字内容(如证件号)等时,会自动转为科学计数法。导致在读取数据时解析错误(或精度偏差) 场景二: excel导出时,在导出数据设计较长的数字时(如证件号等),为避免出现科学计数法的展示,通常会将该字段设置单元格格式为文本。但如需在导出的文件再补充写若干刚,补充的数据对应列会默认为常规,输入长数字后自动转为科学计数法,导致后续读取解析失败。

回答

6

建议创建对象的时候直接用string, 也可以自己创建转换器去解决。 设置单元格格式 使用:com.alibaba.excel.annotation.write.style.ContentStyle#dataFormat

8

@zhuangjiaju 无论是对象用string还是写转换器,都只能处理要导出的数据单元格。没办法修改未导出的数据单元格格式(导出空对象数据不考虑)。这样会导致基于导出的excel再次编辑时,后面的行单元格和上方导出的格式差别很大,也不利于再次读入时的数据解析

7

请问一下,你已经有方法解决了空白的单元格的格式了么

1

实现SheetWriteHandler,在afterSheetCreate方法中设置默认样式

CellStyle cellStyle = writeWorkbookHolder.getWorkbook().createCellStyle();  
DataFormat format = writeWorkbookHolder.getWorkbook().createDataFormat();  
cellStyle.setDataFormat(format.getFormat("#,##0.00"));  
sheet.setDefaultColumnStyle(2, cellStyle);