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++;
}
此外,自动调整列的大小是一个非常缓慢的步骤,所以只有在您写入所有行后才应该这样做
我正在使用 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++;
}
此外,自动调整列的大小是一个非常缓慢的步骤,所以只有在您写入所有行后才应该这样做