我到处都是堆栈溢出,似乎无法获取Java代码来填充XSSF excel单元的背景色。根据其他人的说法,这应该使左上角的单元格变为黄色:
// Example Code
try {
// prepare
FileInputStream resource = new FileInputStream( FILEPATH + FILENAME );
XSSFWorkbook workbook = new XSSFWorkbook( resource );
XSSFSheet sheet = workbook.createSheet( "Example Sheet" );
// create
XSSFRow row = sheet.createRow( 0 );
XSSFCell cell = row.createCell( 0 );
XSSFCellStyle style = workbook.createCellStyle();
XSSFColor color = new XSSFColor( Color.YELLOW );
// stylize
style.setFillBackgroundColor( color );
cell.setCellStyle( style );
// finalize
FileOutputStream output = new FileOutputStream( "Example Workbook.xlsx" );
workbook.write( output );
workbook.close();
} catch ( Exception e ) {
// error
e.printStackTrace();
}
...但事实并非如此。有人可以让我知道我做错了吗?我正在使用Apache POI版本3.16。
谢谢!
最佳答案
CellStyle
的三个属性确定如何填充单元格:
大多数填充模式(例如
FillPatternType.BIG_SPOTS
)都使用两种颜色。名称 FillForegroundColor 具有误导性,但可以理解。它是填充图案的前景色,仍然位于单元格的背景中。要用一种颜色填充单元格,您需要使用
FillPatternType.SOLID_FOREGROUND
,它使用前景颜色。因此,您需要按以下方式更改代码:// stylize
style.setFillForegroundColor(color);
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cell.setCellStyle(style);