Java Apache POI – XSSFCell setFillBackgroundColor无效

我已经看遍了堆栈溢出,似乎无法让我的Java代码来填充XSSF Excel单元格的背景颜色。 从别人的话说,这应该使左上angular的单元格变成黄色:

// 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);