Apache POI 数据格式限制与方法调用



Java 8 和 Apache POI 4.x 在这里。我发现有证据表明您只能通过dataFormat.getFormat(...)获得 64K 不同的数据格式。但这是否意味着只要你的应用使用 64K(或更少(不同的数据格式,您就可以调用任意次数dataFormat.getFormat(...)?或者这是否意味着您只能应用格式(因此在开始出现错误之前调用dataFormat.getFormat(...)64K 次?

由于不同单元格格式的Excel限制,导致"太多不同的单元格格式"错误。这仅与不同的数据格式间接相关,因为单元格可能不仅在其单元格格式中设置了数据格式,而且还可能具有字体格式,边框格式和内部格式(颜色(。限制说:在当前Excel版本中,一个Excel工作簿中不能有超过64,000种不同的单元格格式。不同的单元格格式在数据格式、字体格式、边框格式、内部格式等方面意味着不同......

因此,从理论上讲,您可以拥有64,000多种不同的数据格式,但不能在一个工作簿的不同单元格样式中使用超过64,000种数据格式。

apache poi的类 DataFormat 使用short来索引不同的数据格式。由于short的最大值为 32,767,并且索引以 0 开头,因此不能使用apache poi在一次Workbook中创建超过 32,768 种不同的数据格式。

注意:所有这些都是关于不同的格式。因此,您可以根据需要随时调用 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")总是多次获得相同的数据格式索引。

最新更新