无法在新的ApachePOI XSSFWorkbook中简单地创build主题

如果我通过构造函数XSSFWorkbook()创buildXSSFWorkbook,是否可以创build空主题? 我可以创build新的主题,但不完全。 我可以在文件content_types.xml和/xl/_rels/workbook.xml.rels中创build两个条目:

XSSFWorkbook xssfWorkbook = new XSSFWorkbook(); POIXMLDocumentPart docThemePart = xssfWorkbook.createRelationship(XSSFRelation.THEME, XSSFFactory.getInstance(), 1); 

通常在ApachePOI中是不可能的,因为它会导致错误。 我不得不修改(!)ApachePOI ThemesTable类 – 我添加了构造函数:

 public ThemesTable() { super(); } 

然后上面的函数也创build文件/xl/theme/theme1.xml,但是它是空的。 如何填写这个文件? 如果我得到主题

 ThemesTable theme = (ThemesTable) docThemePart; 

并改变它,内容不写到theme.xml。 如何填写这个文件? 我检查了Zip创build。 ZipPartMarshaller类中的方法marshall()从某些工作簿部分获取inputstream。 而对于主题inputstream是空的。 也许是这个问题? 当我尝试(用于testing)创build其他对象时:

 xssfWorkbook.createRelationship(XSSFRelation.CHART, XSSFFactory.getInstance()); 

一切都很好。

现在做什么?

你也需要重写commit方法

最简单的方法是获取一个最近的夜晚构build(直到3.13testing版2不存在),然后使用StylesTable.ensureThemesTable()方法为您添加一个空的主题表

    Interesting Posts