【问题标题】:Java Apache POI - XSSFCell setFillBackgroundColor Has No EffectJava Apache POI - XSSFCell setFillBackgroundColor 没有效果
【发布时间】:2018-01-14 03:23:31
【问题描述】:

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

谢谢!

【问题讨论】:

  • 关闭你的output

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


【解决方案1】:

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

  • 填充模式
  • 填充前景色
  • 填充背景颜色

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

要用一种颜色填充单元格,您需要使用FillPatternType.SOLID_FOREGROUND,它使用前景颜色。所以你需要改变你的代码如下:

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

【讨论】:

  • 除了关于关闭输出流的附加后记之外都是正确的,因为workbook.close(); 已经这样做了。
  • 谢谢,不知道,我删除了后记。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-20
  • 1970-01-01
  • 1970-01-01
  • 2012-04-24
  • 1970-01-01
  • 2016-10-06
  • 1970-01-01
相关资源
最近更新 更多