0

我的 .docx 文档中有一个与左侧对齐的文本标题。我想在标题右侧添加页码为“第 1 页”、“第 2 页”等。我正在使用 Apache POI,是否有任何可能的方法来做同样的事情。我正在使用下面的代码添加左对齐标题 -

XWPFDocument document = new XWPFDocument();         
CTSectPr sectPr = document.getDocument().getBody().addNewSectPr();
XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(document, sectPr);   
//write header content
CTP ctpHeader = CTP.Factory.newInstance();
CTR ctrHeader = ctpHeader.addNewR();
CTText ctHeader = ctrHeader.addNewT();
String headerText = "This is a header";
ctHeader.setStringValue(headerText);    
XWPFParagraph headerParagraph = new XWPFParagraph(ctpHeader, document);
XWPFParagraph[] parsHeader = new XWPFParagraph[1];
parsHeader[0] = headerParagraph;
policy.createHeader(XWPFHeaderFooterPolicy.DEFAULT, parsHeader);`

请帮助我解决这个问题。

4

1 回答 1

0

问题已解决。我现在可以在页眉中添加右对齐页码。

我已使用以下链接作为相同的参考 - Apache POI 如何添加页码

下面的代码现在对我来说很好 -

        XWPFDocument document = new XWPFDocument();

        CTSectPr sectPr = document.getDocument().getBody().addNewSectPr();
        XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(document, sectPr);

        //write header content
        CTP ctpHeader = CTP.Factory.newInstance();
        CTR ctrHeader = ctpHeader.addNewR();
        CTText ctHeader = ctrHeader.addNewT();
        String headerText = "FISHER SCIENTIFIC COMPANY L.L.C. DISTRIBUTION AGREEMENT";
        ctHeader.setStringValue(headerText);    

        //write page number header
        CTP ctpHeaderPage = CTP.Factory.newInstance();
        CTPPr ctppr = ctpHeaderPage.addNewPPr();
        CTString pst = ctppr.addNewPStyle();
        pst.setVal("style21");
        CTJc ctjc = ctppr.addNewJc();
        ctjc.setVal(STJc.RIGHT);
        ctppr.addNewRPr();
        CTR ctr = ctpHeaderPage.addNewR();
        ctr.addNewRPr();
        CTFldChar fch = ctr.addNewFldChar();
        fch.setFldCharType(STFldCharType.BEGIN);

        ctr = ctpHeaderPage.addNewR();
        ctr.addNewInstrText().setStringValue(" PAGE ");

        ctpHeaderPage.addNewR().addNewFldChar().setFldCharType(STFldCharType.SEPARATE);

        ctpHeaderPage.addNewR().addNewT().setStringValue("1");

        ctpHeaderPage.addNewR().addNewFldChar().setFldCharType(STFldCharType.END);

        XWPFParagraph headerParagraph = new XWPFParagraph(ctpHeader, document);
        XWPFParagraph headerParagraphPage = new XWPFParagraph(ctpHeader, document);
        XWPFParagraph[] parsHeader = new XWPFParagraph[2];
        parsHeader[0] = headerParagraph;
        parsHeader[1] = headerParagraphPage;
        policy.createHeader(XWPFHeaderFooterPolicy.DEFAULT, parsHeader);
于 2015-04-06T06:31:52.263 回答