/ / POIを使用してWordファイルを作成する - java、apache、ms-word、apache-poi

POIを使用してWordファイルを作成します - java、apache、ms-word、apache-poi

私の要件は、テンプレートファイルを読み、その内容のいくつかの値を変更して別のファイルに書き戻すことです。最も重要なことは、それはテンプレートのスタイルと同じスタイルを持つべきです。

私が直面している問題は私が読むことができるということです書きますが、スタイルを転送することも非常に困難です。特に、段落スタイルをドキュメントに適用しようとすると、うんざりします。 Plsは私を助けます.....これは私のコードです

  public static void main(String[] args) {
try {
HWPFDocument templateFile = new HWPFDocument(new FileInputStream("D:\POI\testPOIin.doc"));
HWPFDocument blankFile = new HWPFDocument(new FileInputStream("D:\POI\blank.doc"));

ParagraphProperties pp = templateFile.getRange().getParagraph(4).cloneProperties();
blankFile.getRange().insertAfter(pp, 0);
OutputStream out = new FileOutputStream("D:\POI\testPOIout.doc");
blankFile.write(out);

} catch (FileNotFoundException fnfe) {
// TODO: Add catch code
fnfe.printStackTrace();
} catch (Exception ioe) {
// TODO: Add catch code
ioe.printStackTrace();
}
}
}

Plsは私が間違っていることを私に知らせました.....

回答:

回答№1は0

私も同じような仕事をして、調査の後に私は解決策を作成しましたが、それはdocxファイルに対してのみ機能します。

public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream(new File("transformed.docx"));
XWPFDocument doc = new XWPFDocument(new FileInputStream(new File("original.docx")));
for(XWPFParagraph p:doc.getParagraphs()){
for(XWPFRun r:p.getRuns()){
for(CTText ct:r.getCTR().getTList()){
String str = ct.getStringValue();
if(str.contains("NAME")){
str = str.replace("NAME", "Java Dev");
ct.setStringValue(str);
}
}
}
}
doc.write(fos);
}

それはスタイルや他の小道具を節約するように低レベルの要素で動作します。誰かに役立つことを願っています。