繁体   English   中英

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

[英]HSSFSheet POI API Java doesn't fill all columns with color

我正在使用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++;
}

此外,自动调整列的大小是一个很慢的步骤,因此只有在写完所有行后才能进行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM