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