使用Java在Word文件中建立表格

Microsoft Word 是一種流行的文字處理應用程序,用於建立各種類型的文件。這些文件可能包含多種類型的元素,包括文字、圖像、表格和圖表。當涉及到用 Java 自動建立和操作文件時,您可能需要一個輕鬆的解決方案來在 Word 文件中建立表格。因此,在這篇文章中,我們將探討如何在 Java 應用程式中在 Word 文件中建立表格。

在 Word 文件中建立表格的 Java 庫

Aspose.Words for Java 是一個 API,允許 Java 開發人員以程式設計方式處理 Microsoft Word 文件。它提供了廣泛的用於創建、修改和操作 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 文件中建立表格有兩種方法:

  • 使用文件產生器
  • 使用 DOM(文檔物件模型)

您可以選擇最適合您要求的方法。那麼讓我們來詳細探討一下這些方法。

使用 DocumentBuilder 建立表

DocumentBuilder 類別為您提供了一種快速、簡單的方法來從頭開始建立動態文件或處理現有文件。它提供了一系列用於插入各種內容元素的功能,例如文字、複選框、OLE 物件、段落、清單、表格、圖像等。

以下是在Java中使用DocumentBuilder類別在Word文件中建立表格的步驟。

  • 建立Document類別的物件來載入或建立Word文件。
  • 建立 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();

// 表中至少存在一行後,必須套用表寬格式。
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 文件中建立表格。

  • 建立Document類別的物件來載入或建立Word文件。
  • 建立 Table 類別的對象,並使用 Document.getFirstSection().getBody().appendChild(Table) 方法將表格插入到文件中。
  • 建立 Row 類別的物件並使用 Table.appendChild(Row) 方法將其插入表中。
  • 建立 Cell 類別的對象,設定格式選項並為儲存格新增文字。
  • 使用 Row.appendChild(Cell) 方法將儲存格插入行中。
  • 對所需數量的行重複此程序。
  • 使用 Document.save() 方法儲存 Word 文件。

以下程式碼片段展示如何使用 Java 在 Word 文件中建立表格。

// 建立或載入文檔。
Document doc = new Document();
        
// 我們首先建立表物件。注意我們必須傳遞文檔對象
// 到每個節點的構造函數。這是因為我們創建的每個節點都必須屬於
// 到某個文檔。
Table table = new Table(doc);
doc.getFirstSection().getBody().appendChild(table);

// 在這裡,我們可以呼叫 EnsureMinimum 來為我們建立行和單元格。使用這個方法
// 確保指定的節點有效。在這種情況下,有效的表格應至少具有一行和一個儲存格。

// 相反,我們將自己處理行和表的創建。
// 如果我們在演算法中建立表,這將是最好的方法。
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 文件中建立表格,以下是要遵循的步驟。

  • 建立Document類別的物件來載入或建立Word文件。
  • 建立 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 的更多信息,請瀏覽其廣泛的文檔示例。如有任何疑問,請隨時透過我們的論壇告訴我們。

也可以看看