在利用poi、docx4j等jar包生成word文档,涉及到一些复杂的功能的时候,往往需要引入一些这样的类进行辅助编码。初学时,我很困惑这些类的名字以及背后所代表的含义。
在引入poi jar包的时候,往往需要引入poi-ooxml的相关jar包,可见该jar包和xml有着莫大的关系。
<properties>
<poi.version>4.1.2</poi.version>
</properties>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
</dependency>
实际上,在word文档另存为功能下可以选择word文档保存类型,我们将word文档保存为xml格式,并利用格式化工具将其格式化 XML 在线格式化。
这是其中一个普通文本的片段。你是否看到了那些似曾相识的对象?
<w:body>
<w:p w:rsidR="00FB5F74" w:rsidRDefault="00B50936">
<w:r w:rsidRPr="00410D05">
<w:rPr>
<w:rFonts w:hint="eastAsia"/>
<w:b/>
</w:rPr>
<w:t>8</w:t>
</w:r>
<w:r w:rsidRPr="00410D05">
<w:rPr>
<w:b/>
</w:rPr>
<w:t>455</w:t>
</w:r>
<w:r>
<w:t xml:space="preserve"> 442</w:t>
</w:r>
</w:p>
<w:p w:rsidR="009E398F" w:rsidRDefault="009E398F"/>
<w:p w:rsidR="009E398F" w:rsidRDefault="009E398F"/>
在这里可以对word进行字体设置、文字加粗等样式设置。
在这里可以对word进行表格宽度、居中方式、垂直对齐的样式设置
相信你现在已经不难理解这段代码了(word的单元格垂直合并)。
public static void setRowMerge(XWPFTableCell tableCell, STMerge.Enum mergeValue) {
CTTc ctTc = tableCell.getCTTc();
CTTcPr cpr = ctTc.isSetTcPr() ? ctTc.getTcPr() : ctTc.addNewTcPr();
CTVMerge merge = cpr.isSetVMerge() ? cpr.getVMerge() : cpr.addNewVMerge();
merge.setVal(mergeValue);
}
又如word页码的关键代码 PAGE * MERGEFORMAT。
另外,利用开发工具的debug功能我们也可以非常方便的抓取内容,进行word文档的内容和格式调整。
相信掌握这些开发技巧,再复杂的word文档你也将游刃有余。