gpt4 book ai didi

java - Apache POI : cloning worksheets containing charts

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:52:49 25 4
gpt4 key购买 nike

根据许多来源,例如 Limitations section on official page ,可能使用 POI 中的 excel 图表的唯一好方法是使用具有现有图表的 Excel 文件作为模板并修改图表使用的源单元格。而且效果很好。

问题是我们不仅需要一个工作表,而且需要多个(编译时我们不知道有多少)工作表具有相同的图表但不同的(动态生成的)数据。使用cloneSheet(sheetNumber)是一种复制模板工作表的方法。但是,如果仅当图表在被克隆的工作表上时才能正常工作。

当我尝试克隆带有图表的工作表时:

Exception in thread "main" java.lang.RuntimeException: The class org.apache.poi.hssf.record.chart.ChartFRTInfoRecord needs to define a clone method
at org.apache.poi.hssf.record.Record.clone(Record.java:71)
at org.apache.poi.hssf.model.InternalSheet.cloneSheet(InternalSheet.java:388)
at org.apache.poi.hssf.usermodel.HSSFSheet.cloneSheet(HSSFSheet.java:125)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.cloneSheet(HSSFWorkbook.java:652)

更新:

我切换到 XSSF,现在至少没有运行时异常。表格数据是克隆的,但不是图表(它们不存在于克隆的表格中)。

有没有人成功克隆带有图表的工作表?或者也许有人有其他想法如何解决我们遇到的问题,即使用 POI 为动态数量的工作表生成 excel 图表?

最佳答案

我最终得到了相当复杂的解决方法:

  1. 我通过 Excel 宏生成大量带有模板图表的工作表(例如 1000 张)
  2. 我使用 Apache POI 在所需数量的工作表中输入数据(并使用图表使用的命名范围进行操作)
  3. 我使用 Apache POI 将尽可能多的工作表重命名为我需要的名称(因此我仅限于 HSSF,因为 XSSF 在重命名工作表后不会更新 Excel 中的命名范围引用:-( )
  4. 我用 Apache POI 删除了其余的表格

实现这个概念上简单且常见的用例(即用图表导出到 Excel)是一项认真的工作,但至少它是可能的,而且效果很好。

关于java - Apache POI : cloning worksheets containing charts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9686891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com