我正在尝试使用Apache POI在.xlsx文件中获取单元格颜色信息。
方法cellStyle.getFillBackgroundColor()
返回短。如何将short转换为java.awt.Color
或任何其他格式(XSSFColor
)。
最终,我想根据其背景颜色存储单元格的值。
Workbook workbook = WorkbookFactory.create(new FileInputStream (new File(SAMPLE_XLSX_FILE_PATH)));
Sheet sheet = workbook.getSheetAt(0);
DataFormatter dataFormatter = new DataFormatter();
sheet.forEach(row -> {
row.forEach(cell -> {
String cellValue = dataFormatter.formatCellValue(cell);
CellStyle cellStyle = cell.getCellStyle();
System.out.println(cellStyle.getFillBackgroundColor());
//Color userColor = cellStyle.getFillBackgroundColor(); //ERROR
});
System.out.println();
});
我正在使用3.6版,我认为它不支持getFillBackgroundColorColor()
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.6</version>
</dependency>
最佳答案
使用.xlsx电子表格,您可以调用the getFillBackgroundColorColor
(2 "Color" words)方法。它返回org.apache.poi.ss.usermodel.Color
实现的XSSFColor
(不是非常有用的接口)。然后,可以将其转换为XSSFColor
。
XSSFColor = (XSSFColor) cellStyle.getFillBackgroundColorColor();
或者,再次使用.xlxs电子表格,可以将
CellStyle
转换为XSSFCellStyle
,并且XSSFCellStyle
的getFillBackgroundColorColor
方法直接返回XSSFColor
。它还具有getFillBackgroundXSSFColor
,它执行相同的操作。获取背景填充颜色。
注意-许多单元格实际上是用前景填充而不是背景填充-参见
getFillForegroundColor()
注意实心填充是作为前景色实现的,因此前景色可能就是您真正想要的。对于前景色有补充方法,例如
getFillForegroundColorColor
。