根据多个来源的信息,例如官方页面上的“限制”部分(Limitations section on official page),可能与 POI 一起使用 Excel 图表的唯一好方法是使用具有现有图表的 Excel 文件作为模板,并修改图表使用的源单元格。这种方法非常有效。
问题在于,我们不仅需要一个,而且需要多个(而且在编译时我们不知道有多少)具有相同图表但不同(动态生成的)数据的工作表。使用cloneSheet(sheetNumber)可以复制模板工作表。但是,如果图表位于被克隆的工作表上,则此方法仅适用于一段时间。
当我尝试克隆带有图表的工作表时,出现以下错误:
问题在于,我们不仅需要一个,而且需要多个(而且在编译时我们不知道有多少)具有相同图表但不同(动态生成的)数据的工作表。使用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图表?