如何格式化POI hssf中的列而不是单元格

当我打开一个有数百/数千行数据的Excel文件时,我遇到了一个问题,“太多的单元格格式”

有关错误的更多信息
http://excelzoom.com/2009/09/the-mystery-of-excels-too-many-different-cell-formats/

所以我想格式化一个列而不是一个单元格。 我可以弄清楚如何格式化一个列的唯一方法是格式化每个单元格; 通过实施下面列出的代码。 我想格式化一列而不是一行。 我有数百/数千行数据要格式化。 任何build议将非常感激。

谢谢,

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); 

在这里find答案

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

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

山姆

至less在使用“新”Excel格式时,有一个更好的方法。 使用:

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

使用这将确保样式继续甚至低于插入数据的行。 而生成的文件也会变小。

由于您还没有在Loop外定义CellStyle对象,所以每次创buildWorkbook的新对象时都会创build,因此每次都会抛出错误。

因此,在类中使用更高级别创buildCellStyle对象,并使用wb.createCellStyle();引用Loop中的同一对象wb.createCellStyle();