2

XWPF jar (apache poi) を使用して、docx ドキュメント (既存ではなく新しいドキュメント) にヘッダーとフッターを作成したいと考えています。

ポリシーを使用XWPFHeaderFooterPolicy policy = document.getHeaderFooterPolicy();するとnullになるため、新しいドキュメントでポリシーを作成する方法がわかります。

CustomXWPFDocument document = new CustomXWPFDocument();
XWPFHeaderFooterPolicy policy = document.getHeaderFooterPolicy();
XWPFHeader head = policy.createHeader(policy.DEFAULT);
head.getListParagraph().get(0).createRun().setText("Hello Header World!");
CTP ctP1 = CTP.Factory.newInstance();
CTR ctR1 = ctP1.addNewR();
CTText t = ctR1.addNewT();
t.setStringValue("Paragraph in header");
XWPFParagraph p1 = new XWPFParagraph(ctP1, document);
XWPFParagraph[] pars = new XWPFParagraph[1];
pars[0] = p1;
policy.createHeader(policy.FIRST, pars);
4

3 に答える 3

1

XWPFDocument doc次のコードを使用して、まだ存在しない場合はセクション プロパティを追加する必要があります。

CTBody body = doc.getDocument().getBody();
CTSectPr sectPr = body.isSetSectPr()? body.getSectPr() : body.addNewSectPr();
于 2015-01-24T17:49:40.213 に答える
0
public static void setFooter(XWPFDocument document, String footerText) {
    CTP ctpFooter = CTP.Factory.newInstance();
    ctpFooter.addNewR().addNewT();

    XWPFParagraph footerParagraph = new XWPFParagraph(ctpFooter, document);
    XWPFRun footerRun = createFormattedRun(footerParagraph);
    footerRun.setFontSize(6);
    footerRun.setText(footerText);
    XWPFParagraph[] parsFooter = new XWPFParagraph[1];
    parsFooter[0] = footerParagraph;

    CTSectPr sectPr = document.getDocument().getBody().addNewSectPr();
    XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(document, sectPr);
    policy.createFooter(XWPFHeaderFooterPolicy.DEFAULT, parsFooter);
}
于 2017-09-07T15:14:05.877 に答える
0

私は同じ問題を抱えていましたが、解決策が見つかりませんでした。この場合、ヘッダーとフッターを含むテンプレート docx ファイルを作成し、それらを変更しました。この慣行は、Apache メール アーカイブで見つけました。

于 2014-11-25T14:02:33.170 に答える