获取.xls工作表中单元格的文本和背景色作为java中的十六进制

获取.xls工作表中单元格的文本和背景色作为java中的十六进制,java,excel,apache-poi,xls,poi-hssf,Java,Excel,Apache Poi,Xls,Poi Hssf,我需要验证单元格折扣文本的十六进制颜色是否为#FF1493,同一单元格背景的十六进制颜色是否为#FFC0CB 我得到了背景的rgb颜色,但我无法将其转换为十六进制,也无法得到文本的十六进制颜色 请在下面的代码和表格的屏幕截图中找到,以便让您了解所涉及的单元格 String fileFormat = FileManagement.getFileFormat(new java.io.File(fileName)); List<String> content = n

我需要验证单元格折扣文本的十六进制颜色是否为#FF1493,同一单元格背景的十六进制颜色是否为#FFC0CB

我得到了背景的rgb颜色,但我无法将其转换为十六进制,也无法得到文本的十六进制颜色

请在下面的代码和表格的屏幕截图中找到,以便让您了解所涉及的单元格

        String fileFormat = FileManagement.getFileFormat(new java.io.File(fileName));
    List<String> content = new ArrayList<>();
    HSSFWorkbook workbookXLS = null;
    try {
        InputStream ExcelFileToRead = new FileInputStream(fileName);
        //Getting the workbook instance for .XLS('old' excel format) file
        workbookXLS = new HSSFWorkbook(ExcelFileToRead);
    } catch (FileNotFoundException | NotOLE2FileException ex) {
        fail(ex.getMessage() + "! File: " + fileName);
    }
    //getting the first or specific sheet from the workbook
    HSSFSheet sheetXLS = workbookXLS.getSheetAt(0);
    HSSFRow rowXLS;
    HSSFCell cellXLS;
    //Iterating all the rows in the sheet
    Iterator rows = sheetXLS.rowIterator();
    while (rows.hasNext()) {
        rowXLS = (HSSFRow) rows.next();
        if (rowXLS.getRowNum() = 7) {
            cellXLS = rowXLS.getCell(0);
            if (cellXLS.getCellTypeEnum() == CellType.STRING) {
                if (cellXLS.getStringCellValue().equals("loads : Id")) {
                    Color colorFG = cellXLS.getCellStyle().getFillForegroundColorColor();
                    short[] rgb = HSSFColor.toHSSFColor(colorFG).getTriplet();   //this returns the rgb color of the background -> 255 192 203
                    System.out.println("THE FIRST COLOR RGB IS " + rgb[0] + "SECOND " + rgb[1] + "THIRD " + rgb[2]);
                    Color colorBG = cellXLS.getCellStyle().getFillBackgroundColorColor();
                    short[] hshs = HSSFColor.toHSSFColor(colorBG).getTriplet();  //this returns ->  0 0 0
                    System.out.println("THE SECOND COLOR RGB IS" + hshs[0] + "SECOND " + hshs[1] + "THIRD " + hshs[2]);
                }
            } else if (cellXLS.getCellTypeEnum() == CellType.NUMERIC) {
                content.add(String.valueOf(cellXLS.getNumericCellValue()));
            }
        }
    }[![enter image description here][1]][1]
stringfileformat=FileManagement.getFileFormat(新的java.io.File(文件名));
列表内容=新建ArrayList();
HSSF工作簿工作簿xls=null;
试一试{
InputStream ExcelFileToRead=新文件InputStream(文件名);
//获取.XLS('old'excel格式)文件的工作簿实例
工作簿XLS=新的HSSF工作簿(ExcelFileToRead);
}catch(FileNotFoundException | NotOLE2FileException ex){
失败(例如getMessage()+“!File:+fileName);
}
//从工作簿中获取第一张或特定工作表
HSSFSheet sheetXLS=工作簿xls.getSheetAt(0);
HSSFRow rowXLS;
HSSFCell细胞;
//迭代工作表中的所有行
迭代器行=sheetXLS.rowditerator();
while(rows.hasNext()){
rowXLS=(HSSFRow)rows.next();
if(rowXLS.getRowNum()=7){
cellXLS=rowXLS.getCell(0);
if(cellXLS.getCellTypeEnum()==CellType.STRING){
if(cellXLS.getStringCellValue().equals(“loads:Id”)){
Color colorFG=cellXLS.getCellStyle().getFillForegroundColorColor();
short[]rgb=HSSFColor.toHSSFColor(colorFG.getTriplet();//这将返回背景的rgb颜色->255 192 203
System.out.println(“第一种颜色RGB是”+RGB[0]+“第二种”+RGB[1]+“第三种”+RGB[2]);
Color colorBG=cellXLS.getCellStyle().getFillBackgroundColorColor();
short[]hshs=HSSFColor.toHSSFColor(colorBG.getTriplet();//返回->0
System.out.println(“第二种颜色RGB是”+hshs[0]+“第二种”+hshs[1]+“第三种”+hshs[2]);
}
}else if(cellXLS.getCellTypeEnum()==CellType.NUMERIC){
content.add(String.valueOf(cellXLS.getNumericCellValue());
}
}
}[![在此处输入图像描述][1][1]
我们将非常感谢您的帮助

您可以尝试以下方法:

String hex = String.format("#%02x%02x%02x", rgb[0], rgb[1], rgb[2]); 
或资本X:

String hex = String.format("#%02X%02X%02X", rgb[0], rgb[1], rgb[2]); 

萨吉布,谢谢你提出如何将其转换为十六进制的想法!我使用中提供的答案获得了文本的rgb颜色。