Java Apache POI - XSSFCell setFillBackgroundColor 无效

Java Apache POI - XSSFCell setFillBackgroundColor Has No Effect

我查看了整个堆栈溢出,似乎无法让我的 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);