java - Java从Apache poi获取excel单元格背景颜色
问题描述
我正在尝试在.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();
});
我正在使用我认为不支持 getFillBackgroundColorColor() 的版本 3.6
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.6</version>
</dependency>
解决方案
使用 .xlsx 电子表格,您可以调用( getFillBackgroundColorColor
2 "Color" words)方法。它返回一个org.apache.poi.ss.usermodel.Color
(不是一个非常有用的接口),XSSFColor
实现。然后你可以将它转换为XSSFColor
.
XSSFColor = (XSSFColor) cellStyle.getFillBackgroundColorColor();
或者,再次使用 .xlxs 电子表格,您可以将 转换CellStyle
为XSSFCellStyle
,并且XSSFCellStyle
' 的getFillBackgroundColorColor
方法直接返回一个XSSFColor
。它也有getFillBackgroundXSSFColor
which 做同样的事情。
获取背景填充颜色。
注意 - 许多单元格实际上填充了前景填充,而不是背景填充 - 请参阅
getFillForegroundColor()
请注意,实心填充是作为前景色实现的,因此前景色可能是您真正想要的。前景色有互补的方法,例如getFillForegroundColorColor
。
推荐阅读
- sql - PL/SQL如何返回整条记录
- ruby-on-rails - 具有多租户的 Postgresql 9.6 - INHERIT 说子表具有不同数据类型的列,但它没有
- javascript - 如何使用来自单独的 JSS 样式组件的 React Context 值?
- ios - 如何强制安装不兼容的 pod?
- python-3.x - 如何从包含空格的 txt 中捕获元素?
- shell - bash 按单词和 concat 分组
- dataweave - 在 mule 4 中带长度检查的 Leftpad Zeros
- php - php-7 中的“2020 年 1 月第一个星期三”与“2020 年 1 月的第一个星期三”
- docker - 使用 Docker,我如何绑定挂载并保留容器文件?
- r - 在 R 中,如何按行使用 argmax 函数并计算变量数?