打开包含数百/数千行数据的 excel 文件时遇到问题,"太多不同的单元格格式">
有关错误
的详细信息http://excelzoom.com/2009/09/the-mystery-of-excels-too-many-different-cell-formats/
所以我正在尝试格式化列而不是单元格。我弄清楚如何格式化列的唯一方法是格式化每个单独的单元格;通过实现下面列出的代码。我想格式化一列而不是一行。我有数百/数千行数据要格式化。任何建议将不胜感激。
谢谢
HSSFCellStyle cellStyle = wb.createCellStyle();
HSSFDataFormat dataFormat = wb.createDataFormat();
cellStyle.setDataFormat(dataFormat.getFormat("0.00"));
HSSFRow row = sheet.createRow(iRow);
HSSFCell cell = row.createCell((short)1);
cell.setCellStyle(cellStyle);
有一个更好的方法,至少当你使用"新的"Excel格式时。用:
((XSSFSheet)sheet).getColumnHelper().setColDefaultStyle(col, myStyle);
使用此选项将确保样式即使在插入数据的行下方也能继续。并且生成的文件也会更小。
在这里找到答案
http://poi.apache.org/faq.html#faq-N1014B 转到该部分
- 我在 POI 中创建工作簿时使用样式,但 Excel 拒绝打开该文件,抱怨"样式太多"。
山 姆
由于您尚未定义CellStyle
Loop 外部的对象,因此每次为工作簿创建新对象时都会创建多个对象,因此每次创建多个对象都会引发错误。
因此,在类中创建更高级别CellStyle
对象,并在循环中引用相同的对象wb.createCellStyle();