我到处都是堆栈溢出,似乎无法获取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的三个属性确定如何填充单元格:

  • FillPattern
  • FillForegroundColor
  • FillBackgroundColor

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

    要用一种颜色填充单元格,您需要使用FillPatternType.SOLID_FOREGROUND,它使用前景颜色。因此,您需要按以下方式更改代码:
    // stylize
    style.setFillForegroundColor(color);
    style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
    cell.setCellStyle(style);
    

    10-05 21:29