1.编号样式:

word中经常会使用1. 2. 3. 之类的编号,在java自动化生成文档时的实现方式:

static String cTAbstractNumDecimalXML = "<w:abstractNum xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" w:abstractNumId=\"0\">"
"<w:multiLevelType w:val=\"hybridMultilevel\"/>"
"<w:lvl w:ilvl=\"0\"><w:start w:val=\"1\"/><w:numFmt w:val=\"decimal\"/><w:lvlText w:val=\"%1、\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"720\" w:hanging=\"360\"/></w:pPr></w:lvl>"
"<w:lvl w:ilvl=\"1\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"decimal\"/><w:lvlText w:val=\"%1.%2\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"1440\" w:hanging=\"360\"/></w:pPr></w:lvl>"
"<w:lvl w:ilvl=\"2\" w:tentative=\"1\"><w:start w:val=\"1\"/><w:numFmt w:val=\"decimal\"/><w:lvlText w:val=\"%1.%2.%3\"/><w:lvlJc w:val=\"left\"/><w:pPr><w:ind w:left=\"2160\" w:hanging=\"360\"/></w:pPr></w:lvl>"
"</w:abstractNum>";

XWPFParagraph paragraph = doc.createParagraph();

XWPFRun run = paragraph.createRun();

CTNumbering cTNumbering = CTNumbering.Factory.parse(cTAbstractNumDecimalXML);
CTAbstractNum cTAbstractNum = cTNumbering.getAbstractNumArray(0);
XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum);
XWPFNumbering numbering = doc.createNumbering();
BigInteger abstractNumID = numbering.addAbstractNum(abstractNum);
BigInteger numID = numbering.addNum(abstractNumID);

以上代码可以实现编号,效果图:

java 生成复杂的word(java代码生成word文档1)(1)


2. 字体的实现(五号字体):

XWPFParagraph par = doc.createParagraph();
XWPFRun run = par.createRun();
run.setFontFamily("等线");
// 设置五号字体
run.setFontSize(10.5);
run.setColor("FF0000");
run.setText("网络连接正常");

以上代码使用的是POI 5.0的版本。五号字体是word中的常用字体,对应是字体大小数字是10.5,新版本的POI在设置字体大小的setFontSize方法可以设置为double类型,5.0以下版本的POI不支持设置为double类型。

POI5.0可以在maven或者在Apache官网https://poi.apache.org/download.html下载到。

,