【问题标题】:Java get the excel cell background color from Apache poiJava从Apache poi获取excel单元格背景颜色
【发布时间】:2018-09-10 18:49:07
【问题描述】:

我正在尝试使用 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();
    });

我正在使用我认为不支持 getFillBackgroundColorColor() 的 3.6 版

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.6</version>
</dependency>

【问题讨论】:

  • 您为什么使用 3.6 版?该版本于 2009 年发布。
  • 生产中的旧版应用程序。在我更改任何 jar 的版本之前需要进行大量测试。

标签: java excel apache apache-poi xlsx


【解决方案1】:

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

XSSFColor = (XSSFColor) cellStyle.getFillBackgroundColorColor();

或者,同样使用 .xlxs 电子表格,您可以将 CellStyle 转换为 XSSFCellStyleXSSFCellStylegetFillBackgroundColorColor 方法直接返回 XSSFColor。它还有 getFillBackgroundXSSFColor 做同样的事情。

获取背景填充颜色。

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

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

【讨论】:

  • 如何从 XSSFColor obj 中检索十六进制值或颜色代码(如 Hex:#E5FFCC)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 2013-11-07
相关资源
最近更新 更多