Java Apache POI - XSSFCell setFillBackgroundColor无效

时间:2017-08-06 20:40:37

标签: java excel apache-poi background-color xssf

我已经遍布堆栈溢出,似乎无法获取我的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。

谢谢!

1 个答案:

答案 0 :(得分:2)

CellStyle的三个属性决定了单元格的填充方式:

  • FillPattern
  • FillForegroundColor
  • FillBackgroundColor

大多数填充模式(如FillPatternType.BIG_SPOTS)都使用这两种颜色。名称 FillForegroundColor 具有误导性,但可以理解。它是填充图案的前景色,仍然在单元格的背景中。

要使用一种颜色填充单元格,您需要使用使用前景颜色的FillPatternType.SOLID_FOREGROUND。因此,您需要按如下方式更改代码:

// stylize
style.setFillForegroundColor(color);
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cell.setCellStyle(style);