1

我在打开包含数百/数千行数据的 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);
4

3 回答 3

6

至少当您使用“新”Excel 格式时,有一个更好的方法。采用:

((XSSFSheet)sheet).getColumnHelper().setColDefaultStyle(col, myStyle);

使用这将确保样式即使在您插入数据的行下方也能继续。并且生成的文件也会更小。

于 2016-03-26T09:02:38.783 回答
5

在这里找到了答案

http://poi.apache.org/faq.html#faq-N1014B转到该部分

  1. 我在 POI 中创建工作簿时使用了样式,但 Excel 拒绝打开文件,抱怨“样式太多”。

山姆

于 2012-08-22T00:44:11.567 回答
0

由于您尚未CellStyle在 Loop 之外定义对象,因此每次都会为 Workbook 创建新对象,因此每次创建多个对象都会引发错误。

所以CellStyle在类中创建更高级别的对象并在循环中引用相同的对象wb.createCellStyle();

于 2013-09-23T12:04:11.773 回答