我正在使用 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
最佳答案
单元格样式适用于整个工作簿,因此不应在循环中创建。它们可以(并且应该)重复使用,并且给定工作簿可以包含的数量限制相当低(由 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++;
}
此外,自动调整列大小是一个非常慢的步骤,因此只有在写入所有行后才应执行
关于java - HSSFSheet POI API Java 不会用颜色填充所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28031506/