当前位置: 首页 > 知识库问答 >
问题:

使用Apache POI从一个XLSX文件到另一个XLSX文件单元格背景色的错误处理

欧阳向文
2023-03-14

当我试图从一个XSLX文件获取单元格背景颜色并将此颜色设置为另一个XSLX文件的单元格背景时,我遇到了一个问题。

输入和输出文件都是2007(XLSX)格式(输入文件是用MS Excel2010创建的)。

    InputStream is = new FileInputStream("forRead.xlsx");
    Workbook wb_in = WorkbookFactory.create(is);

    XSSFCell cell_in = (XSSFCell) wb_in.getSheetAt(0).getRow(0).getCell(0);

    XSSFColor background_in = ((XSSFColor) cell_in.getCellStyle().getFillForegroundColorColor());

    XSSFColor background_out = new XSSFColor();

    background_out.setARGBHex(background_in.getARGBHex()); // this works wrong :(.

    XSSFWorkbook wb_out = new XSSFWorkbook();
    Sheet sheet_out = wb_out.createSheet();
    Row row_out = sheet_out.createRow((short) 2);

    XSSFCell cell_out = (XSSFCell)row_out.createCell((short)1);
    XSSFCellStyle style_out = wb_out.createCellStyle();
    style_out.setFillForegroundColor(background_out); //  if I use background_in, then the output color will be correct
    style_out.setFillPattern(CellStyle.SOLID_FOREGROUND);
    cell_out.setCellStyle(style_out);

    FileOutputStream fileOut = new FileOutputStream("forWrite.xlsx");
    wb_out.write(fileOut);
    fileOut.close();

1)background_in.getargbhex()获得与我在Excel中看到的不同的颜色。#F79646或rgb(247,150,70)而不是#FDE9D9或rgb(253,233,217)

2)如果执行style_out.setfillForegroundColor(background_in),输出文件中的颜色将是正确的;这使我想到可以通过为XSSFColor对象设置一些添加属性来解决propblem问题,比如alpha或其他属性。

我的Maven项目可以从这里下载。包括XLSX文件。

更新:已解决

我应该设置色彩除了RGB。

共有1个答案

司知
2023-03-14

它似乎我应该添加设置色彩属性除了RGB。back_xssfcolor_out.settint(Back_xssfcolor_in.gettint());

 类似资料:
  • 在谷歌搜索StackOverflow之后,我还没有找到与这个问题相关的地方。目前我可以将空白单元格读取为空,但一次只能读取一个单元格。所以我必须写这样的东西: 这对我来说不太好,因为我对重复感到不满。我们可以设置返回?

  • 问题内容: 我正在使用openpyxl读取Excel文件。我想从“ xlsx”文件中获取单元格颜色。我试图获得颜色,以便: 我得到“ 11L”,但我需要得到rgb颜色,我该怎么办? 问题答案: 看起来工作表正在使用内置的颜色索引。这些的映射位于 11L对应于0000FF00(十六进制),其rgb元组将为绿色(0,255,0)。

  • 我有以下代码要写入现有的XLSX文件 使用XLS文件,效果非常好。 请帮忙。 你好,雷纳多

  • 我正在使用Apache POI 4.1.2运行以下代码: 输出文档包含两个具有红色背景的单元格:似乎在第二个单元格上设置红色背景具有覆盖第一个单元格背景颜色的效果。 如果仅在第一个单元格上设置背景,则背景颜色将正确设置为绿色。 我如何解决这个问题?

  • 让我们开始使用Python和XlsxWriter模块创建一个简单的Excel电子表格。 假设我们有一些要转换为Excel Xlsx文件的每月支出数据: expenses = ( ['Rent', 1000], ['Gas', 100], ['Food', 300], ['Gym', 50], ) 那么,我们可以从如下所示的示例程序开始: import

  • 我正在编写一个PERL脚本,它从一个数据库中读取数据。XLSX Excel文件,并将数据插入Oracle数据库。数据库采用Windows-1252编码,excel文件采用UTF-8编码(据我所知,这是xlsx文件的标准),特殊字符如ö、ü、ű、ő显示为??。正确的转换方法是什么。xlsx文件?在将读取的字符串插入数据库之前,我曾尝试将其转换为windows-1252,并尝试将整个Excel文件转换