如何用JAVA对word文件中的页面进行编号

时间:2017-02-23 15:13:59

标签: java ms-word numbers apache-poi border

如何通过Java对word文件中的页面进行编号。

我正在使用Apache POI驱动程序来交互JAVA和word。 当我从JAVA创建文件时,我想在我的word文件中使用边框和页码。

请帮忙。

1 个答案:

答案 0 :(得分:1)

标记为重复的问题对一个相对简单的问题有一个复杂的答案。

简单答案(页码)与此答案非常相似:https://stackoverflow.com/a/40264237/2296441。不同之处在于要插入哪个字段。上述答案显示了如何插入TOC字段。在您的情况下,您需要一个PAGE字段。

XWPFParagraph p;
...
// get or create your paragraph
....
CTP ctP = p.getCTP();
CTSimpleField page = ctP.addNewFldSimple();
page.setInstr("PAGE");
page.setDirty(STOnOff.TRUE);

注意: setDirty告诉Word更新字段,这会导致在打开文档时打开对话框。此对话框是MS Word,确保您要更新该字段。我不认为你可以禁用对话框,但仍然可以在打开时计算字段。

要设置页面边框,您需要再次进入CT类。在这种情况下,文档中的适当位置是节属性。以下是如何在整个页面周围设置一个双线边框,从页面边缘设置24个点。

// Page Borders
CTDocument1 ctDoc = doc.getDocument();
CTBody ctBody = ctDoc.getBody();
CTSectPr ctSectPr = ctBody.isSetSectPr() ? ctBody.getSectPr() : ctBody.addNewSectPr();
CTPageBorders ctPgBorders = ctSectPr.isSetPgBorders() ? ctSectPr.getPgBorders() : ctSectPr.addNewPgBorders();
ctPgBorders.setOffsetFrom(STPageBorderOffset.PAGE);
CTBorder ctBorder = CTBorder.Factory.newInstance();
ctBorder.setVal(STBorder.DOUBLE);
ctBorder.setSpace(new BigInteger("24"));
ctPgBorders.setTop(ctBorder);
ctPgBorders.setBottom(ctBorder);
ctPgBorders.setRight(ctBorder);
ctPgBorders.setLeft(ctBorder);

免责声明
POI中的MS-Word功能仍然很大程度上未完成,可能会发生变化。