Java从Apache poi获取excel单元格背景颜色

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java从Apache poi获取excel单元格背景颜色相关的知识,希望对你有一定的参考价值。

我正在尝试使用Apache POI在.xlsx文件中获取单元格颜色信息。

方法cellStyle.getFillBackgroundColor()正在回归。如何将短片转换为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,而XSSFCellStylegetFillBackgroundColorColor方法直接返回XSSFColor。它也有getFillBackgroundXSSFColor做同样的事情。

获取背景填充颜色。

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

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

以上是关于Java从Apache poi获取excel单元格背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

求 java用poi包读取excel单元格长度宽度的方法

java poi怎么获取excel单元格的内容

Java用POI解析excel并获取所有单元格数据

java poi 导出 excel时 ,合并单元格的问题

如何使用合并单元格值大于单元格宽度的 Apache-POI 增加 excel 行的高度?

如何使用Java和apache poi选择excel中的所有单元格