【发布时间】:2019-02-16 00:46:35
【问题描述】:
我正在使用 Apache POI 读取 .xlsx 文件。我想检索单元格背景颜色的十六进制代码。我可以看到打印 rgb 值的功能,但我正在寻找十六进制代码。
Workbook workbook = WorkbookFactory.create(new FileInputStream (new File(SAMPLE_XLSX_FILE_PATH)));
Sheet sheet = workbook.getSheetAt(0);
DataFormatter dataFormatter = new DataFormatter();
for (Row row: sheet) {
for(Cell cell: row) {
String cellValue = dataFormatter.formatCellValue(cell);
XSSFCellStyle cellStyle = (XSSFCellStyle)cell.getCellStyle();
XSSFColor cellColor = cellStyle.getFillForegroundXSSFColor();
if(cellValue.equals("sh")){
System.out.print(cellValue + "\t");
System.out.println(" cellColor 0: " + cellColor.getRgb()[0]);
System.out.println(" cellColor 1: " + cellColor.getRgb()[1]);
System.out.println(" cellColor 2: " + cellColor.getRgb()[2]);
}
}
更新:1
正如@Zardo 所建议的:
if(cellValue.equals("sh")){
System.out.print(cellValue + "\n");
System.out.println(" cellColor 0: " + cellColor.getRgb()[0]);
System.out.println(" cellColor 1: " + cellColor.getRgb()[1]);
System.out.println(" cellColor 2: " + cellColor.getRgb()[2]);
String hex = String.format("#%02x%02x%02x", cellColor.getRgb()[0],cellColor.getRgb()[1], cellColor.getRgb()[2]);
System.out.println(hex.toUpperCase());
}
输出是:
sh
cellColor 0: -1
cellColor 1: -52
cellColor 2: -1
#FFCCFF
我认为它提供的颜色信息不正确。
【问题讨论】:
-
getARGBHex() 方法不能满足您的需求吗?
-
我使用的是 3.6 版本的 Apache poi。我没有这个方法。你用的是哪个版本@Gagravarr
-
Apache POI 3.6 是古老的,有大量已知的错误,以及一些已知的安全问题!你真的需要尽快更新! POI 3.11 看起来是第一个使用该方法的版本
标签: java excel colors hex apache-poi