gpt4 book ai didi

java - 无法使用 Apache POI 读取 xls 文件的单元格颜色

转载 作者:行者123 更新时间:2023-12-02 11:41:54 25 4
gpt4 key购买 nike

import org.apache.poi.ss.usermodel
import org.apache.poi.hssf.usermodel.HSSFWorkbook;


// Assume this method is wrapped in a class
public static void parseFile(){
// File Path has a .xls extension
FileInputStream file = new FileInputStream(filePath);
HSSFWorkbook wb = new HSSFWorkbook(file);
HSSFSheet sheet = wb.getSheetAt(0);

for(int rn = sheet.getFirstRowNum(); rn <= sheet.getLastRowNum(); rn++){
HSSFRow row = sheet.getRow(rn);

for(int cn = 0; cn < row.getLastCellNum(); cn++){
HSSFCell cell = row.getCell(cn);
//This is apache's color
HSSFColor color = cell.getCellStyle().getFillBackgroundColorColor;

// Excel entire row is red and it is not entering here.
if(color.equals(IndexedColors.RED)){
System.out.println("I made it here!");
cn++;
continue;
}
}
}
}

文件处理正常,但它不会进入我的“if 语句”。我做错了吗?这可以用 xls 文件来完成吗?我看到 xlsx 的示例,但没有看到 xls 的任何示例。谢谢!

最佳答案

方法getFillBackgroundColorColor()返回以下类型:

org.apache.poi.ss.usermodel.Color

不是

java.awt.Color

检查 RED 的一种方法是检查 RGB 值,如下所示:

byte[] rgb=colore.getRGB();
System.out.println("color" + " " + rgb[0] + " " + rgb[1] + " " + rgb[2] );
if ( (rgb[0] == (byte)0xff)
&& (rgb[1] == 0)
&& (rgb[2] == 0)) {
System.out.println("that is totally red");
}

要点是,不要将 apachePOI 的 Color 类与 java.awt.Color 混淆

关于java - 无法使用 Apache POI 读取 xls 文件的单元格颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48485194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com