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

标签 java excel apache-poi

这里是 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)DataFormatapache 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/

相关文章:

java - 如何通过 play 项目获取 jacoco 仪器以进行外部功能测试?

java - 了解 wait() 和 notify() 方法

excel - 按日期计算的每日动态平均订单数

java - 使用 HashMap 写入 Excel 文件

java - Apache poi xlsx 的生成速度因图像较多而变慢

java - 替换(字符串,字符串)|如何使用 stringBuilder 做到这一点

java - 无法使用 java -jar 执行 maven 生成的 jar 文件

java - 圆环图 Apache-POI

Excel - 递归 VLookup

java - 如何在Java apache中添加超链接的空间地址