在自动调整列大小时,如何强制Apache POI使用单元格格式?

时间:2014-06-23 20:22:30

标签: java excel apache-poi

我正在使用Apache POI生成Excel电子表格(.xlsx)。我的许多单元格样式都包含数据格式字符串,但是当自动调整包含此类样式的列时,列宽基于未格式化的单元格内容。

示例:

DataFormat format = wb.createDataFormat();
CellStyle dollars_m = wb.createCellStyle();
dollars_m.setDataFormat(format.getFormat("_($* #,##0.0,,\"m\"_);_($* (#,##0.0,,\"m\");_(@_)"));

单元格值123456789.01将调整大小,就好像单元格包含12个字符而不是实际包含的8个字符($ 123.5m)。

我可以在自动调整大小之前强制使用公式来解决自己,是否有一种强制格式应用的方法?

1 个答案:

答案 0 :(得分:0)

从3.10开始,Apache POI现在在确定autoSizeColumn中列的宽度之前应用格式。必须在调用DataFormatter#evaluateInCell之前使用autoSizeColumn评估公式单元格,否则宽度将基于缓存的公式结果。