这里是 Java 8 和 Apache POI 4.x。我找到了evidence您只能通过 dataFormat.getFormat(...) 获取 64K 不同的数据格式。但这是否意味着只要您的应用使用 64K(或更少)不同的数据格式,您就可以调用 dataFormat.getFormat(...)
任意次数?或者这是否意味着您只能应用格式设置(因此在开始出现错误之前调用 dataFormat.getFormat(...)
64K 次?
最佳答案
"Too many different cell formats"由于 Excel
导致错误结果对不同单元格格式的限制。这仅与不同的数据格式间接相关,因为单元格不仅可以在其单元格格式中设置数据格式,还可以具有字体格式、边框格式和内部格式(颜色)。该限制表示:一个 Excel
中不能有超过 64,000 种不同的单元格格式。当前工作簿Excel
版本。不同的单元格格式意味着数据格式、字体格式、边框格式、内部格式等不同。
因此,理论上您可以拥有超过 64,000 种不同的数据格式,但在一个工作簿的不同单元格样式中不能使用超过 64,000 种数据格式。
类(class)DataFormat的apache poi
使用 short
索引不同的数据格式。自short
最大值为 32,767 并且索引从 0 开始,您不能在一个 Workbook
中创建超过 32,768 种不同的数据格式。使用apache poi
.
注意:所有这些都是关于不同格式的。所以您可以调用DataFormat.getFormat只要需要不超过 32,768 种不同数据格式,就可以根据需要频繁使用而不会出现错误。
例如您可以调用CellUtil.setCellStyleProperty :
...
Workbook workbook = ...
DataFormat dataFormat = workbook.createDataFormat();
...
... {
Cell cell = ...
...
CellUtil.setCellStyleProperty(cell, CellUtil.DATA_FORMAT, dataFormat.getFormat("#,##0.00"));
...
}
...
根据需要经常进行,甚至在一个循环中处理超过 64,000 个单元格,如 dataFormat.getFormat("#,##0.00")
多次始终仅获取相同的数据格式索引。
关于java - Apache POI 数据格式限制与方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59470082/