HSSFSheet POI API Java不会用颜色填充所有列

我正在使用POI导出一些数据到.xslx,但有些列没有填充颜色,我使用循环,所以它应该工作,它为大多数列。 那么怎么了?

for (int i = 0; i < columnNamesFase1.length; i++) { HSSFCell cellA1 = row1.createCell((short) i); cellA1.setCellValue(columnNamesFase1[columnCount]); HSSFCellStyle cellStyle = workbook.createCellStyle(); cellStyle.setFillForegroundColor(HSSFColor.LIGHT_ORANGE.index); cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); cellA1.setCellStyle(cellStyle); worksheet.autoSizeColumn(columnCount); columnCount++; } 

例如,以下是.xslx文件: https : //dl.dropboxusercontent.com/u/41330678/new.xls

单元格样式适用于整个工作簿,因此不应该在循环中创build。 他们可以(也应该)重复使用,并且给定的工作簿可以包含的数量的限制相当低(由Excel文件格式强加)

因此,你应该改变你的代码更像是:

 HSSFCellStyle cellStyle = workbook.createCellStyle(); cellStyle.setFillForegroundColor(HSSFColor.LIGHT_ORANGE.index); cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); for (int i = 0; i < columnNamesFase1.length; i++) { HSSFCell cellA1 = row1.createCell((short) i); cellA1.setCellValue(columnNamesFase1[columnCount]); cellA1.setCellStyle(cellStyle); worksheet.autoSizeColumn(columnCount); columnCount++; } 

此外,自动调整列的大小是一个非常缓慢的步骤,所以只能写完所有行后才能完成