- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
使用 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()); } }
类似问题:How do I get the (Java Apache POI HSSF) Background Color for a given cell?
引用:http://poi.apache.org/spreadsheet/quick-guide.html#CustomColors
更新 1: 我终于找到了一些有用的东西。 XSSFColor 的这种方法返回 ARGB 十六进制代码,我可以用它确定 RGB 值(显然)。我希望这有助于为遇到相同问题的人节省 x 小时。
((XSSFColor) color).getARGBHex())
更新 2: 令我沮丧的是,我发现某些单元格不会返回包含 ARGBHex 数据的背景 XSSFColor。正在为此寻找解决方法。
最佳答案
使用wb.getStylesSource()
,你可以得到一个StylesTable
,您可以从中获取所有 CellStyle
对象。 XSSFCellStyle
API 有许多方法来获取颜色对象 - 即 XSSFColor
. XSSFCellStyle
API 还可以访问该样式中的所有字体 - 即 XSSFFont
,您可以从中再次获取该特定字体的 XSSFColor
对象。
一旦您获得了该 XSSFColor
的访问权,对 getRGB()
的调用将返回一个 RGB 值的字节数组。
关于java - 访问 XSSFWorkbook 中的调色板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18112155/
我使用此代码将 Excel 中的字体更改为我定义的颜色 Color sColor = new Color (value,0,0); XSSFColor userColo
我创建 CSV 到 XLSX 应用程序 - My first question Exception in thread "main" java.lang.NoClassDefFoundError: o
我正在尝试制作这样的 XSSFWorkbook File file = new File(fileName); Workbook workbook = new XSSFWorkbook(file);
我创建 CSV 到 XLSX 应用程序 - My first question Exception in thread "main" java.lang.NoClassDefFoundError: o
我正在使用以下代码: File file = new File("abc.xlsx"); InputStream st = new FileInputStream(file); XSSFWorkboo
我正在尝试以 excel 格式保存用户定义对象的列表,即来自 REST API 的 .xlsx 格式。这会创建一个 XSSF 工作簿 并将数据存储在工作簿中。返回 字节数组输入流 .在我的实体类中,我
我目前有一个 XSSFWorkbook,并且想将其转换或以某种方式将其更改为 Java 代码中的 File。有什么办法可以做到吗? 最佳答案 使用XSSFWorkbook.write(java.io.
我正在开发一个程序,该程序从 Excel 电子表格中读取每一行和单元格,然后从特定行的每个单元格中获取数据,并使用该数据进行 Web 服务调用。一旦我收到 Web 服务 XML 响应的返回,我就会解析
我编写了一些 Java 代码,它从三个电子表格中获取信息,并在具有 4GB 内存的机器上生成一个大型电子表格(10 列,26,950 行)。它在生成电子表格时崩溃了(内存不足),但是通过重写代码以一次
我在创建新的 xlsx 文件时遇到 XSSFWorkbook api 问题。 场景:我的 gui 菜单中有一个菜单项“新建文件”,它从流创建新的 xlsx 文件。第一次当我单击菜单项“新建文件”时,会
使用 POI 时,Excel 文档中的单元格和字体包含颜色信息,这些信息并不总是返回 rgb 值,而且通常只提供索引值。必须根据某些内容查找索引值以获得颜色。在 HSSFWorkbook (xls)
如果我通过构造函数 XSSFWorkbook() 创建 XSSFWorkbook,是否可以创建空主题?我可以创建新主题,但不能完全创建。我可以在文件 content_types.xml 和/xl/_r
我正在使用 Spring 3 AbstractExcelView使用导出到 Excel 功能将文件下载到 .xls格式,但当我的行大于 65536 时,它会引发异常: Invalid row numb
我需要密码保护 XSSFWorkBook。对于 HSSF,我可以轻松完成,但相同的实现不适用于 XSSFWorkBook。 我正在使用 Apache POI 3.6 和 3.9。我的意思是我尝试使用
我在共享访问由 JAVA 程序追加的 EXCEL 文件时遇到问题。一切正常,直到文件未被其他人访问且仍处于打开状态,同时程序再次运行 - 至少每 10 分钟一次。 API 告诉我类似文件正在使用且无法
我正在尝试使用 Jersey 生成 XSSFWorkbook。 我已经尝试了以下 header ,但似乎没有任何效果: @Produces("应用程序/xml") @Produces("applica
我有这个网页单击按钮时,它会读取数据并将文件保存到位置 xyz。 我不想要这样。我想通过 chrome 浏览器下载它。 如何发送下面的回复? 给出错误的行是response.getOutputStre
package apsel5; import java.io.FileInputStream; import java.util.Iterator; import org.apache.poi.sl.
据我了解,AbstractExcelView 类函数 buildExcelDocument 不支持 XSSFWorkbook ( https://jira.spring.io/browse/SPR-6
我们有一个预先创建的 excel 文件,其中包含交叉引用工作表的精美图表和公式。它还包含宏。源数据应该复制粘贴到一张纸上,工作簿的其余部分从预先存在的布线中填充。 注意:我真的不关心阅读/修改这个工作
我是一名优秀的程序员,十分优秀!