根据众多消息来源,例如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图表?
答案 0 :(得分:6)
我最终得到了相当复杂的解决方法:
实现这个概念上简单和常见的用例(即使用图表导出到Excel)是一项认真的工作,但至少它是可行的并且它运行良好。