无法在新的 ApachePOI XSSFWorkbook 中简单地创建主题
Unable to simply create Theme in new ApachePOI XSSFWorkbook
如果我通过构造函数XSSFWorkbook()创建XSSFWorkbook,是否可以创建空主题?我可以创建新的主题,但不完全是。我可以在文件 content_types.xml 和 /xl/_rels/workbook 中创建两个条目。xml.rels:
XSSFWorkbook xssfWorkbook = new XSSFWorkbook();
POIXMLDocumentPart docThemePart = xssfWorkbook.createRelationship(XSSFRelation.THEME, XSSFFactory.getInstance(), 1);
一般在ApachePOI中是做不到的,因为会出错。我必须修改(!)ApachePOI ThemesTable class - 我添加了构造函数:
public ThemesTable() { super(); }
然后上面的函数也创建了文件 /xl/theme/theme1.xml,但是它是空的。如何填写这个文件?如果我得到主题
ThemesTable theme = (ThemesTable) docThemePart;
并更改它,内容不写入theme.xml。如何填写这个文件?
我检查了 Zip 创建。 ZipPartMarshaller class 中的方法 marshall() 从某些工作簿部分获取输入流。对于 Theme 输入流是空的。也许这就是问题所在?当我尝试(用于测试)创建其他对象时:
xssfWorkbook.createRelationship(XSSFRelation.CHART, XSSFFactory.getInstance());
一切都很好。
现在怎么办?
您还需要覆盖 commit
方法
你最简单的选择是获取最近的夜间构建(直到 3.13 beta 2 发布),然后使用 StylesTable.ensureThemesTable() method 为你添加一个空主题 Table
如果我通过构造函数XSSFWorkbook()创建XSSFWorkbook,是否可以创建空主题?我可以创建新的主题,但不完全是。我可以在文件 content_types.xml 和 /xl/_rels/workbook 中创建两个条目。xml.rels:
XSSFWorkbook xssfWorkbook = new XSSFWorkbook();
POIXMLDocumentPart docThemePart = xssfWorkbook.createRelationship(XSSFRelation.THEME, XSSFFactory.getInstance(), 1);
一般在ApachePOI中是做不到的,因为会出错。我必须修改(!)ApachePOI ThemesTable class - 我添加了构造函数:
public ThemesTable() { super(); }
然后上面的函数也创建了文件 /xl/theme/theme1.xml,但是它是空的。如何填写这个文件?如果我得到主题
ThemesTable theme = (ThemesTable) docThemePart;
并更改它,内容不写入theme.xml。如何填写这个文件? 我检查了 Zip 创建。 ZipPartMarshaller class 中的方法 marshall() 从某些工作簿部分获取输入流。对于 Theme 输入流是空的。也许这就是问题所在?当我尝试(用于测试)创建其他对象时:
xssfWorkbook.createRelationship(XSSFRelation.CHART, XSSFFactory.getInstance());
一切都很好。
现在怎么办?
您还需要覆盖 commit
方法
你最简单的选择是获取最近的夜间构建(直到 3.13 beta 2 发布),然后使用 StylesTable.ensureThemesTable() method 为你添加一个空主题 Table