栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

十六进制代码的Apache POI XSSFColor

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

十六进制代码的Apache POI XSSFColor

好消息是,如果您使用的是XSSF,而不是HSSF,那么解决问题的方法就很简单。您只需将样式变量转换为XSSFCellStyle。如果这样做,则存在带有XSSFColor参数的setFillForegroundColor版本,因此您无需调用getIndexed()。这是一些示例代码:

XSSFCellStyle style = (XSSFCellStyle)cell.getCellStyle();XSSFColor myColor = new XSSFColor(Color.RED);style.setFillForegroundColor(myColor);

但是,如果您使用的是HSSF,那么事情就更难了。HSSF使用调色板,它只是一种颜色数组。传递给setFillForegroundColor的short值是调色板的索引。

因此,您遇到的问题是将rgb值转换为调色板索引。您使用getIndexed()提出的解决方案是合乎逻辑的,但是不幸的是,它确实以您可能认为的方式适用于XSSFColor。

幸运的是,有一个解决方案。目前,让我们假设您会满意使用默认调色板中的一种颜色,而不是使用自定义颜色。在这种情况下,您可以使用HSSFPalette和HSSFColor类来解决此问题。这是一些示例代码:

HSSFWorkbook hwb = new HSSFWorkbook();HSSFPalette palette = hwb.getCustomPalette();// get the color which most closely matches the color you want to useHSSFColor myColor = palette.findSimilarColor(255, 0, 0);// get the palette index of that color short palIndex = myColor.getIndex();// pre to get the style for the cell goes herestyle.setFillForegroundColor(palIndex);

如果要使用默认调色板中尚未包含的自定义颜色,则必须将它们添加到调色板中。HSSFPalette的javadoc定义了您可以用来执行此操作的方法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/514989.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号