我已经遍布堆栈溢出,似乎无法获取我的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。
谢谢!
答案 0 :(得分:2)
CellStyle
的三个属性决定了单元格的填充方式:
大多数填充模式(如FillPatternType.BIG_SPOTS
)都使用这两种颜色。名称 FillForegroundColor 具有误导性,但可以理解。它是填充图案的前景色,仍然在单元格的背景中。
要使用一种颜色填充单元格,您需要使用使用前景颜色的FillPatternType.SOLID_FOREGROUND
。因此,您需要按如下方式更改代码:
// stylize
style.setFillForegroundColor(color);
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cell.setCellStyle(style);