- Word ドキュメントを作成する
- ドキュメントにテキストを書き込む
- テキストのプロパティを設定する
- 段落に対してプロパティを設定する
- ドキュメントのテキストを取得する
- テーブルを作成する
- テーブルのサイズを指定する
需要はほとんど無いとは思いますが、簡単なサンプルです。
Word ドキュメントを作成する
Excel の場合と同じように、doc と docx とで別クラスを使用します。
クラス | フォーマット | 説明 |
---|---|---|
HWPFDocument | Horrible Word Processor Format | 拡張子 doc の MS-Word ドキュメントを扱う |
XWPFDocument | XML Word Processor Format | 拡張子 docx の MS-Word ドキュメントを扱う |
空の docx ファイルを作成するのは、単にドキュメントインスタンスを作成してストリームに write するだけです。
public static void main(String...args) throws Exception { try (FileOutputStream out = new FileOutputStream(new File("sample.docx"))) { XWPFDocument document = new XWPFDocument(); document.write(out); } }
sample.docx という空の Word ドキュメントが生成されます。
ドキュメントにテキストを書き込む
段落(Paragraph)に対して XWPFRun
を作成してテキストを設定します。
XWPFRun
は共通のプロパティが定義された文字のかたまりを表します。
段落は XWPFDocument.createParagraph()
で作成し、段落から XWPFParagraph.createRun()
により XWPFRun
を作成してテキストを設定します。
import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import java.io.File; import java.io.FileOutputStream; public class Main { public static void main(String... args) throws Exception { try (OutputStream out = new FileOutputStream(new File("sample.docx"))) { XWPFDocument document = new XWPFDocument(); XWPFParagraph paragraph = document.createParagraph(); XWPFRun run = paragraph.createRun(); run.setText("サンプル"); document.write(out); } } }
以下のような Word ドキュメントが生成されます。
テキストのプロパティを設定する
テキストの属性を変更するには XWPFRun
に対してプロパティを設定します。
XWPFRun run1 = paragraph.createRun(); run1.setBold(true); run1.setText("ボールド"); run1.setUnderline(UnderlinePatterns.DASH); XWPFRun run2 = paragraph.createRun(); run2.setItalic(true); run2.setFontSize(20); run2.setText("イタリック");
以下のようになります。
段落に対してプロパティを設定する
段落に対する定義は XWPFParagraph
のインスタンスに対してプロパティを定義します。
XWPFParagraph paragraph = document.createParagraph(); paragraph.setAlignment(ParagraphAlignment.CENTER); XWPFRun run1 = paragraph.createRun(); run1.setBold(true); run1.setText("Apache POI"); XWPFRun run2 = paragraph.createRun(); run2.setText("(アパッチ・ポイまたはピーオーアイ)はApacheソフトウェア財団の" + "プロジェクトで、WordやExcelといったMicrosoft Office形式のファイル" + "を読み書きできる100% Javaライブラリとして提供されている。");
以下のようになります。
ドキュメントのテキストを取得する
XWPFWordExtractor
を使うとドキュメントに含まれるテキストを簡単に取得できます。
public static void main(String... args) throws Exception { try (InputStream in = new FileInputStream(new File("sample.docx"))) { XWPFDocument document = new XWPFDocument(in); XWPFWordExtractor we = new XWPFWordExtractor(document); System.out.println(we.getText()); } }
ドキュメントに含まれるテキストが取得できます。
テーブルを作成する
XWPFDocument.createTable()
で行と列を指定してテーブルを作成することができます。
XWPFTable table = document.createTable(2, 3); table.getRow(0).getCell(0).setText("サンプル1"); table.getRow(1).getCell(1).setText("サンプル2"); table.getRow(1).getCell(2).setText("サンプル3");
または以下のように行を作成してセルを追加していくこともできます。
XWPFTable table = document.createTable(); XWPFTableRow row0 = table.getRow(0); row0.getCell(0).setText("サンプル1"); row0.addNewTableCell(); row0.addNewTableCell(); XWPFTableRow row1 = table.createRow(); row1.getCell(1).setText("サンプル2"); row1.getCell(2).setText("サンプル2");
以下のようになります。
テーブルのサイズを指定する
テーブルの幅を固定するのは結構ややこしいです。
XWPFTable table = document.createTable(2, 3); table.getRow(0).getCell(0).setText("サンプル1"); table.getRow(1).getCell(1).setText("サンプル2"); table.getRow(1).getCell(2).setText("サンプル3"); for (XWPFTableRow row : table.getRows()) { row.setHeight(1000); for(XWPFTableCell cell : row.getTableCells()) { cell.getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(2500L)); } }
行の高さは row.setHeight()
で指定します。
列の幅は上記の通りです。
もう少し網羅的に書こうと思いましたが、くじけました。。
- 作者: 丸岡孝司
- 出版社/メーカー: ラトルズ
- 発売日: 2012/02/25
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 68回
- この商品を含むブログ (4件) を見る