Java从Apache Poi获取Excel单元格背景色

时间:2018-09-10 18:49:07

标签: java excel apache apache-poi xlsx

我正在尝试使用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>

1 个答案:

答案 0 :(得分:4)

对于.xlsx电子表格,您可以调用the getFillBackgroundColorColor (2 "Color" words)方法。它返回org.apache.poi.ss.usermodel.Color实现的XSSFColor(不是非常有用的接口)。然后,您可以将其转换为XSSFColor

XSSFColor = (XSSFColor) cellStyle.getFillBackgroundColorColor();

或者,再次使用.xlxs电子表格,您可以将CellStyle转换为XSSFCellStyle,并且XSSFCellStyle的{​​{1}}方法直接返回getFillBackgroundColorColor 。它还具有getFillBackgroundXSSFColor,可做相同的事情。

  

获取背景填充颜色。

     

请注意-许多单元格实际上是用前景填充而不是背景填充-参见getFillForegroundColor()

请注意,实心填充是作为前景色实现的,因此前景色可能是您真正想要的。对于前景色有补充方法,例如XSSFColor