【Java】【Word】 Java で Word の読み書きを行う ~ docx4j / 入門編 ~

Java で Word の読み書きを行うには...

[1] Apache POIを使用する

 → 以下の関連記事を参照のこと
http://blogs.yahoo.co.jp/dk521123/36584129.html
[2] docx4j を使用する

 → 今回は、「[2] docx4j を使用する」を取り上げる

設定

1) 以下のサイトから、「docx4j-community-X.X.X.zip(今回は「docx4j-community-3.3.1.zip」)」
   をダウンロードする
http://www.docx4java.org/downloads.html
2) 1)のファイルを解凍し、「docx4j-X.X.X.jar(今回は「docx4j-3.3.1.jar」)」および
   フォルダ「dependencies」配下のJARファイル(「antlr-X.X.X.jar」「avalon-framework-api-X.X.X.jar」など)
   を全てインポートする

サンプル

HelloWorld.java

https://github.com/plutext/docx4j/blob/master/src/samples/docx4j/org/docx4j/samples/NewDocxHelloWorld.java
import org.docx4j.Docx4J;
import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;

public class HelloWorld {
  public static void main(String[] args) throws Docx4JException {
    WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
    MainDocumentPart mainDocumentPart = wordMLPackage.getMainDocumentPart();

    mainDocumentPart.addParagraphOfText("hello world");

    String filename = System.getProperty("user.dir") + "/HelloWorld.docx";
    Docx4J.save(wordMLPackage, new java.io.File(filename), Docx4J.FLAG_SAVE_ZIP_FILE);
    System.out.println("Saved " + filename);
  }
}

メモ

 * 最終的には、「Wordのテンプレートを読み込んで、その中の一部をJavaで編集したい」のだが
  以下のサンプルを参考に ${key1} みたいなプレイスフォルダを置いても、
  設定した値が一部のみ置き換わっただけで、全ての値を意図した通りに変更できなかった
https://github.com/plutext/docx4j/blob/master/src/samples/docx4j/org/docx4j/samples/VariableReplace.java


関連記事

JavaJavaExcel の読み書きを行う

http://blogs.yahoo.co.jp/dk521123/36148986.html

JavaJava で Word の読み書きを行う ~ Apache POI / 入門編 ~

http://blogs.yahoo.co.jp/dk521123/36584129.html