Java 8和Apache POI 4.x在这里。我发现evidence您只能通过dataFormat.getFormat(...)
获得64K种不同的数据格式。但这是否意味着您可以多次调用dataFormat.getFormat(...)
,只要您的应用程序使用64K(或更少)的不同数据格式?还是这意味着您只能应用格式设置(因此在开始出现错误之前调用dataFormat.getFormat(...)
64K次?
最佳答案
由于不同单元格格式上的Excel
限制,导致出现"Too many different cell formats"错误。这仅与不同的数据格式间接相关,因为单元格不仅可以在其单元格格式中设置数据格式,而且还可以设置字体格式,边框格式和内部格式(颜色)。该限制说明:在当前的Excel
版本中,一个Excel
工作簿中的单元格格式不能超过64,000。不同的单元格格式意味着数据格式,字体格式,边框格式,内部格式,...
因此,从理论上讲,您可以有64,000多种不同的数据格式,但在一本工作簿的不同单元格样式中不能使用超过64,000的数据格式。apache poi
的类DataFormat使用short
索引不同的数据格式。由于short
的最大值为32,767,索引以0开头,因此使用Workbook
不能在一种apache poi
中创建超过32,768种不同的数据格式。
注意:所有这些都是关于不同格式的。因此,只要不超过32,768种不同的数据格式,就可以根据需要多次调用DataFormat.getFormat而不会出错。
例如,您可以调用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")
总是只能多次获得相同的数据格式索引。