代码之家  ›  专栏  ›  技术社区  ›  Manvi

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

  •  2
  • Manvi  · 技术社区  · 6 年前

    我正在尝试获取手机颜色信息 XLSX 使用apache poi的文件。

    方法 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>
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   rgettman    6 年前

    使用.xlsx电子表格,您可以调用 the getFillBackgroundColorColor (2 "Color" words) 方法。它返回一个 org.apache.poi.ss.usermodel.Color (不是一个非常有用的界面),即 XSSFColor 工具。然后你可以把它铸造成 XSSF颜色 .

    XSSFColor = (XSSFColor) cellStyle.getFillBackgroundColorColor();
    

    或者,使用.xlxs电子表格,您可以 CellStyle 作为一个 XSSFCellStyle XSSFCLE风格 获取背景颜色 方法返回 XSSF颜色 直接。它也有 getFillBackgroundXSSFColor 做同样的事情。

    获取背景填充颜色。

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

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