Javaを使用してWord文書内に表を作成する

Microsoft Word は、さまざまな種類の文書の作成に使用される人気のあるワードプロセッサ アプリケーションです。これらのドキュメントには、テキスト、画像、表、グラフなど、いくつかのタイプの要素が含まれる場合があります。 Java でのドキュメントの作成と操作を自動化する場合、Word ドキュメント内に表を作成する簡単なソリューションが必要になる場合があります。そこで、このブログ投稿では、Java アプリケーションで Word 文書に表を作成する方法を説明します。

Word 文書内に表を作成するための Java ライブラリ

Aspose.Words for Java は、Java 開発者がプログラムで Microsoft Word ドキュメントを操作できるようにする API です。 Word 文書を作成、変更、操作するための幅広い機能を提供し、文書の生成と処理タスクを自動化するための貴重なツールとなります。このライブラリを使用して、Word 文書に表を挿入します。

ライブラリをダウンロードするか、次の Maven 構成を使用してインストールできます。

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>23.10</version>
    <classifier>jdk17</classifier>
</dependency>

Java で Word 文書に表を作成する

Aspose.Words for Java を使用して Word 文書に表を作成するには、次の 2 つの方法があります。

  • DocumentBuilder の使用
  • DOM (ドキュメント オブジェクト モデル) の使用

要件に最も適した方法を選択できます。それでは、これらの各方法を詳しく見てみましょう。

DocumentBuilder を使用してテーブルを作成する

DocumentBuilder クラスは、動的ドキュメントを最初から作成したり、既存のドキュメントを処理したりするための迅速かつ簡単な方法を提供します。テキスト、チェックボックス、OLE オブジェクト、段落、リスト、表、画像などのさまざまなコンテンツ要素を挿入するためのさまざまな機能を提供します。

以下は、DocumentBuilder クラスを使用して Java の Word 文書に表を作成する手順です。

  • Word 文書をロードまたは作成するための Document クラスのオブジェクトを作成します。
  • DocumentBuilder クラスのオブジェクトを作成します。
  • DocumentBuilder.startTable() メソッドを使用してテーブルを開始します。
  • DocumentBuilder.insertCell() メソッドを使用してセルを挿入します。
  • (オプション) フォントや配置などの書式設定をセルに適用します。
  • DocumentBuilder.write() メソッドを使用してセルにテキストを挿入します。
  • 必要に応じて、セルとセルへのテキストの挿入を繰り返します。
  • DocumentBuilder.endRow() メソッドを使用してセルの挿入が完了したら、行を終了します。
  • DocumentBuilder.endTable() メソッドを使用してすべての行を挿入すると、テーブルが終了します。
  • Document.save() メソッドを使用して Word 文書を保存します。

次のコード スニペットは、Java を使用して Word 文書内に表を作成する方法を示しています。

// ドキュメントを作成またはロードします。
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// 新しいテーブルを作成し、セルを挿入します。
Table table = builder.startTable();
builder.insertCell();

// テーブル全体の書式設定は、テーブルに少なくとも 1 行が存在した後に適用する必要があります。
table.setLeftIndent(20.0);

// 高さを設定し、ヘッダー行の高さルールを定義します。
builder.getRowFormat().setHeight(40.0);
builder.getRowFormat().setHeightRule(HeightRule.AT_LEAST);

builder.getCellFormat().getShading().setBackgroundPatternColor(new Color((198), (217), (241)));
builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
builder.getFont().setSize(16.0);
builder.getFont().setName("Arial");
builder.getFont().setBold(true);

builder.getCellFormat().setWidth(100.0);
builder.write("Header Row,\n Cell 1");

// このセルの幅は前のセルから継承されるため、指定する必要はありません。
builder.insertCell();
builder.write("Header Row,\n Cell 2");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Header Row,\n Cell 3");
builder.endRow();

builder.getCellFormat().getShading().setBackgroundPatternColor(Color.WHITE);
builder.getCellFormat().setWidth(100.0);
builder.getCellFormat().setVerticalAlignment(CellVerticalAlignment.CENTER);

// 高さをリセットし、テーブル本体に別の高さルールを定義します。
builder.getRowFormat().setHeight(30.0);
builder.getRowFormat().setHeightRule(HeightRule.AUTO);
builder.insertCell();
        
// フォントの書式設定をリセットします。
builder.getFont().setSize(12.0);
builder.getFont().setBold(false);

builder.write("Row 1, Cell 1 Content");
builder.insertCell();
builder.write("Row 1, Cell 2 Content");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Row 1, Cell 3 Content");
builder.endRow();

builder.insertCell();
builder.getCellFormat().setWidth(100.0);
builder.write("Row 2, Cell 1 Content");

builder.insertCell();
builder.write("Row 2, Cell 2 Content");

builder.insertCell();
builder.getCellFormat().setWidth(200.0);
builder.write("Row 2, Cell 3 Content.");
builder.endRow();

// エンドテーブル。
builder.endTable();

// 文書を保存します。
doc.save("table.docx");

以下は、上記のコード サンプルを使用して作成したテーブルのスクリーンショットです。

Word文書内の表

DOMを使用してテーブルを作成する

ドキュメント オブジェクト モデル (DOM) は、Word ドキュメントのメモリ内表現であり、これを使用すると、Word ドキュメントのコンテンツと書式設定をプログラムで読み取り、操作、変更できます。次の手順では、DOM を使用して Word 文書内に表を作成する方法を示します。

  • Word 文書をロードまたは作成するための Document クラスのオブジェクトを作成します。
  • Table クラスのオブジェクトを作成し、Document.getFirstSection().getBody().appendChild(Table) メソッドを使用してドキュメントにテーブルを挿入します。
  • Row クラスのオブジェクトを作成し、Table.appendChild(Row) メソッドを使用してテーブルに挿入します。
  • Cell クラスのオブジェクトを作成し、書式設定オプションを設定し、セルにテキストを追加します。
  • Row.appendChild(Cell) メソッドを使用して行にセルを挿入します。
  • 必要な行数だけこのプロセスを繰り返します。
  • Document.save() メソッドを使用して Word 文書を保存します。

次のコード スニペットは、Java で Word 文書に表を作成する方法を示しています。

// ドキュメントを作成またはロードします。
Document doc = new Document();
        
// まず、テーブル オブジェクトを作成します。 document オブジェクトを渡す必要があることに注意してください
// 各ノードのコンストラクターに。これは、作成したすべてのノードが属する必要があるためです。
// ある書類に。
Table table = new Table(doc);
doc.getFirstSection().getBody().appendChild(table);

// ここで、EnsureMinimum を呼び出して行とセルを作成できます。この方法が使われています
// 指定されたノードが有効であることを確認します。この場合、有効なテーブルには少なくとも 1 つの行と 1 つのセルが必要です。

// 代わりに、行とテーブルの作成を自分で処理します。
// アルゴリズム内でテーブルを作成する場合、これが最適な方法です。
Row row = new Row(doc);
row.getRowFormat().setAllowBreakAcrossPages(true);
table.appendChild(row);

// これで、自動フィット設定を適用できるようになりました。
table.autoFit(AutoFitBehavior.FIXED_COLUMN_WIDTHS);

Cell cell = new Cell(doc);
cell.getCellFormat().getShading().setBackgroundPatternColor(Color.BLUE);
cell.getCellFormat().setWidth(80.0);
cell.appendChild(new Paragraph(doc));
cell.getFirstParagraph().appendChild(new Run(doc, "Row 1, Cell 1 Text"));

row.appendChild(cell);

// 次に、テーブル内の他のセルと行に対してこのプロセスを繰り返します。
// 既存のセルと行を複製することで処理を高速化することもできます。
row.appendChild(cell.deepClone(false));
row.getLastCell().appendChild(new Paragraph(doc));
row.getLastCell().getFirstParagraph().appendChild(new Run(doc, "Row 1, Cell 2 Text"));

// 文書を保存します。
doc.save("table.docx");

Word 文書にネストされたテーブルを挿入する

親テーブルのセル内に配置される入れ子になったテーブルを作成する必要がある場合もあります。複雑なプロセスを経ることなく行うことができます。まず、親テーブルを作成し、次に DocumentBuilder.moveTo(Cell.getFirstParagraph()) メソッドを呼び出して、親テーブルの目的のセル内にコントロールを移動します。完了したら、同じ方法で新しいテーブルを作成します。

次のコード スニペットは、Java を使用して Word 文書内に入れ子になったテーブルを作成する方法を示しています。

// ドキュメントを作成またはロードします。
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// セルを挿入します。
Cell cell = builder.insertCell();
builder.writeln("Outer Table Cell 1");

builder.insertCell();
builder.writeln("Outer Table Cell 2");

// この呼び出しは、最初のテーブル内にネストされたテーブルを作成するために重要です。 
// この呼び出しがないと、下に挿入されたセルは外部テーブルに追加されます。
builder.endTable();

// 外部テーブルの最初のセルに移動します。
builder.moveTo(cell.getFirstParagraph());

// 内部テーブルを構築します。
builder.insertCell();
builder.writeln("Inner Table Cell 1");
builder.insertCell();
builder.writeln("Inner Table Cell 2");
builder.endTable();

// 文書を保存します。
doc.save("table.docx");

以下は、上で作成したネストされたテーブルのスクリーンショットです。

Nested Table in a Word Document

Java で HTML から Word テーブルを作成する

HTML 文字列を使用して Word 文書に表を作成することもできます。その手順は次のとおりです。

  • Word 文書をロードまたは作成するための Document クラスのオブジェクトを作成します。
  • DocumentBuilder クラスのオブジェクトを作成します。
  • DocumentBuilder.insertHtml(String) メソッドを使用して、テーブルの HTML 文字列をドキュメントに挿入します。
  • 最後に、Document.save() メソッドを使用してドキュメントを保存します。

以下は、HTML 文字列から Word テーブルを生成するコード スニペットです。

// ドキュメントを作成またはロードします。
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// AutoFitSettings は HTML から挿入されたテーブルには適用されないことに注意してください。
builder.insertHtml("<table>" +
                   "<tr>" +
                   "<td>Row 1, Cell 1</td>" +
                   "<td>Row 1, Cell 2</td>" +
                   "</tr>" +
                   "<tr>" +
                   "<td>Row 2, Cell 2</td>" +
                   "<td>Row 2, Cell 2</td>" +
                   "</tr>" +
                   "</table>");

// 文書を保存します。
doc.save("table.docx");

無料ライセンスを取得する

Aspose.Words for Java を評価制限なしで使用するための 一時ライセンス を取得できます。

結論

このブログ投稿では、Java を使用して Word 文書内に表を作成する方法を検討しました。ドキュメント ビルダーまたは DOM を使用してテーブルを作成する方法、ネストされたテーブルを作成する方法、および HTML 文字列からテーブルを作成する方法を説明しました。ライブラリをインストールし、ガイドラインに従うことで、テーブル作成機能を Java アプリケーションに簡単に統合できます。

Aspose.Words for Java には、他にも多数の機能と書式設定オプションが用意されており、リッチで複雑なドキュメントを簡単に作成できます。 Aspose.Words for Java について詳しくは、その広範な ドキュメント を参照してください。ご質問がございましたら、フォーラム 経由でお気軽にお問い合わせください。

関連項目