我希望Jett的开发人员能在这里发声。 我在Jett用户邮件列表上发布了这个帖子,但在一个多月内没有回复。
我在您的网站上看到:每张基础/克隆表上的豆子
http://jett.sourceforge.net/transformation/sheet_specific_beans.html
如果模板表包含excel图表,当jett克隆该模板表时,它是否完全复制了表格上的所有内容,包括图表?
我希望它可以,因为它真的有帮助!
此致
答案 0 :(得分:1)
JETT依靠Apache POI来执行所有电子表格操作。要复制模板表,它会调用Workbook
's cloneSheet
method。该方法似乎可以尽可能地复制所有内容,但它根本不能很好地复制图表。我使用“工作表特定的bean”测试了工作表上的图表,以便在模板表中进行克隆。我测试了.xls和.xlsx模板,我尝试了Apache POI 3.9,3.10和3.11。我使用了最新版本的JETT,在撰写本文时,它是0.9.0。
无论使用何种版本的Apache POI,结果都是相同的。根据是否使用.xls(HSSF)或.xlsx(XSSF),结果不同,但结果都不好。
当调用cloneSheet
方法时,我得到来自Apache POI的RuntimeException
:
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:73)
at org.apache.poi.hssf.model.InternalSheet.cloneSheet(InternalSheet.java:418)
at org.apache.poi.hssf.usermodel.HSSFSheet.cloneSheet(HSSFSheet.java:142)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.cloneSheet(HSSFWorkbook.java:749)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.cloneSheet(HSSFWorkbook.java:100)
at net.sf.jett.transform.ExcelTransformer.transform(ExcelTransformer.java:549)
此例外可防止生成电子表格。
对cloneSheet
的调用成功,但生成的电子表格已损坏。当我在Excel中打开电子表格时,它会抱怨“不可读的内容”,并从每个克隆的工作表中删除图表对象,原始工作表除外。如果原始工作表的名称未更改,则该图表将保持不变。但是,如果原始模板工作表的名称确实发生了更改,则图表的系列引用不会更改并丢失。
不幸的是,JETT对此无能为力;这是一个Apache POI问题。当Apache POI为图表创建API支持时,希望这会有所改进。您可以在Apache POI's bug database中添加新错误。