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

标签 java excel api apache-poi

我正在使用 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/

相关文章:

java - Android:如何更改 DatePicker 值

vba - 设置一个 VBA 宏,它将为我的主工作表中的每一行信息创建一个新工作表并以某种格式布局?

xml - 使用 XML 格式化 Excel 单元格

excel - 如何使用 OpenOffice 通过 Matlab 写入 Excel 文件?

php - 如何测试 wsdl 网络服务?

java - 嵌套多值字段

java - 如何正确配置 SimpleMongoRepository?

Java Spring Rest Call使用父类(super class)获取子类

java - 如何从 Java 程序创建和运行 Apache JMeter 测试脚本?

python : atlassian. 错误。ApiValueError : No space or no content type, 或设置了错误的版本类型设置为内容,或状态参数不是草稿