我正在使用Apache POI编辑docx文件的内容。我还需要对docx应用特定的样式。我需要应用的样式在dotx文件中。 在这个问题How can I use predefined formats in DOCX with POI?中,我找到了以下解决方案:
XWPFDocument template = new XWPFDocument(new FileInputStream(new File("Template.dotx")));
XWPFDocument doc = new XWPFDocument();
// let's copy styles from template to new doc
doc.createStyles().setStyles(template.getStyle());
直到最近发生了一些变化之前,它一直运转良好。经过研究,我发现问题出在docx文件中的numbering.xml。
据我了解,numbering.xml和styles.xml是链接在一起的。
因此,将样式设置为XWPFDocument
很好,但是我还需要设置编号。
我找到了与createStyles().setStyles(xxx)
等效的方法:
createNumbering().setNumbering(yyy)
。
setNumbering
期望使用类型为CTNumbering
的参数(就像setStyles
期望使用参数CTSyles
一样)。
虽然文档具有方法getStyles()
返回CTSyles
,但是它没有方法返回CTNumbering
。但是,它确实具有返回getNumbering
的{{1}}方法(同样,就像它具有XWPFNumbering
一样,没有s-返回getStyle()
)。
我使用s-方法研究了XWPFStyles
-,并且已经能够创建一个等效的返回getStyles()
的方法。
我的问题是:有没有更简单的方法将文档编号应用于另一个?