当前位置: 首页 > 面试题库 >

访问XSSFWorkbook中的调色板

伯晨
2023-03-14
问题内容

使用POI时,excel文档中的单元格和字体包含颜色信息,这些信息并不总是返回rgb值,并且通常仅提供索引值。必须对索引值进行对照以获取颜色。在HSSFWorkbook(xls)中,有一种方法可以用来获取调色板:

InputStream in = new FileInputStream("sheet.xls");
HSSFWorkbook wb = new HSSFWorkbook(in);
wb.getCustomPalette();

当访问XSSFWorkbook(xlsx)时,没有这种方法,实际上我在相关类的任何地方都找不到调色板信息。我能够从XSSFont和Cell中获得索引值,但是获取尽可能多的颜色“名称”的唯一方法是将其与IndexedColors枚举进行匹配。这使我回到了相同的原始问题;我仍然没有rgb值可以使用。

InputStream in = new FileInputStream("sheet.xlsx");
XSSFWorkbook wb = new XSSFWorkbook (in);
wb.getCustomPalette(); <-- fail!

我通过CellStyle获得XSSFColor,如下所示:

CellStyle style = cell.getCellStyle();
XSSFColor color = style.getFillBackgroundColorColor();

要通过IndexedColors获得颜色名称:

for (IndexedColors c : IndexedColors.values()) { if (c.index == indexColor){ System.out.println("Color: " + c.name()); } }

参考:http :
//poi.apache.org/spreadsheet/quick-
guide.html#CustomColors

更新1:
我终于找到了可行的方法。XSSFColor的此方法返回ARGB十六进制代码,并可以通过它确定RGB值(显然)。我希望这可以为同一问题的人节省x个小时的时间。

((XSSFColor) color).getARGBHex())

更新2: 令我非常沮丧的是,我发现某些单元格不返回包含ARGBHex数据的背景XSSFColor。寻找解决方法。


问题答案:

使用wb.getStylesSource(),您可以获取StylesTable,从中可以获取所有CellStyle对象。该XSSFCellStyleAPI有任何数量的方法来获得颜色对象-即,一XSSFColor。该XSSFCellStyleAPI还可以访问该样式中的所有字体-即XSSFFont,从中可以再次获得XSSFColor该特定字体对象。

一旦您可以访问XSSFColor,调用getRGB()将返回RGB值的字节数组。



 类似资料:
  • 使用POI时,excel文档中的单元格和字体包含颜色信息,这些信息并不总是返回rgb值,而且通常只提供索引值。索引值必须对照某物进行查找才能得到颜色。在HSSFWorkbook(xls)中,有一种方法可用于获取调色板: 我通过CellStyle获得XSSFColor,如下所示: 通过indexedcolors获取颜色名称: 类似的问题:如何获得给定单元格的(Java Apache POI HSSF

  • 我正试图用bde2020提供的图像构建一个轻量级的最小hadoop堆栈(学习目的)。现在,堆栈包括(除其他外) 名称节点 基本上,我从大数据欧洲官方docker撰写开始,并根据他们的留档添加了色调图像 色调的文件浏览器无法访问HDFS: 将所有服务显式放到同一网络上 当我登录到hue的容器时,我可以看到namenode的端口9870是打开的()。50070不是。我认为我的问题与网络无关。尽管编辑了

  • 我想在XSSFWorkbook中设置自己的背景色。到目前为止,我有这个代码: 但是我得到了以下错误: 类型CellStyle中的setFillForegroundColor(short)方法不是 不推荐使用构造函数XSSFColor(Color) 那么如何在XSSFWorkbook中设置自己的颜色呢?

  • 问题内容: 是否可以使用任何基于角色的开源访问控制系统? 问题答案: 布兰登·萨维奇(Brandon Savage)在他的PHP软件包“ ApplicationACL ” 上做了一个演示,该演示可能会或可能不会完成基于角色的访问。PHPGACL可能也能正常工作,但是我不能肯定地告诉您。 但是,我可以告诉您的是Zend Framework 的Zend_ACL组件将执行基于角色的设置(但是您必须子类化

  • 角色定义 [role_definition] 是RBAC角色继承关系的定义。 Casbin 支持 RBAC 系统的多个实例, 例如, 用户可以具有角色及其继承关系, 资源也可以具有角色及其继承关系。 这两个 RBAC 系统不会互相干扰。 此部分是可选的。 如果在模型中不使用 RBAC 角色, 则省略此部分。 [role_definition] g = _, _ g2 = _, _ 上述角色定义表

  • 问题内容: 给出以下示例:单击第一个链接然后返回页面时,第一个链接变为绿色。但是,即使已声明已访问的链接具有,它仍然没有下划线。即使您添加到该规则,也没有任何改变。 在CSS规范中找不到有关此类行为的任何信息。这是常见的浏览器错误吗?如何解决呢? 问题答案: 您无法在中更改文本装饰。这是出于隐私考虑。基本上更改计算的属性可以使网站确定用户访问过哪些网站。 可以用来设置访问链接样式的CSS属性是颜色