tạo bảng trong tài liệu word bằng Java

Microsoft Word là một ứng dụng xử lý văn bản phổ biến được sử dụng để tạo nhiều loại tài liệu khác nhau. Những tài liệu này có thể chứa một số loại thành phần bao gồm văn bản, hình ảnh, bảng và biểu đồ. Khi nói đến việc tự động hóa việc tạo và thao tác tài liệu trong Java, bạn có thể cần một giải pháp dễ dàng để tạo bảng trong tài liệu Word. Vì vậy, trong bài đăng blog này, chúng ta sẽ khám phá cách tạo bảng trong tài liệu Word trong ứng dụng Java.

Thư viện Java để tạo bảng trong tài liệu Word

Aspose.Words for Java là một API cho phép các nhà phát triển Java làm việc với các tài liệu Microsoft Word theo chương trình. Nó cung cấp nhiều tính năng để tạo, sửa đổi và thao tác với tài liệu Word, khiến nó trở thành một công cụ có giá trị để tự động hóa các tác vụ tạo và xử lý tài liệu. Chúng tôi sẽ sử dụng thư viện này để chèn bảng vào tài liệu Word.

Bạn có thể tải xuống thư viện hoặc cài đặt nó bằng các cấu hình Maven sau.

<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>

Tạo bảng trong tài liệu Word trong Java

Có hai cách để tạo bảng trong tài liệu Word bằng Aspose.Words for Java:

  • Sử dụng DocumentBuilder
  • Sử dụng DOM (Mô hình đối tượng tài liệu)

Bạn có thể chọn phương pháp phù hợp nhất với yêu cầu của bạn. Vì vậy, hãy khám phá chi tiết từng phương pháp này.

Tạo bảng bằng DocumentBuilder

Lớp DocumentBuilder cung cấp cho bạn cách nhanh chóng và dễ dàng để tạo tài liệu động từ đầu hoặc xử lý tài liệu hiện có. Nó cung cấp một loạt các chức năng để chèn các thành phần nội dung khác nhau như văn bản, hộp kiểm, đối tượng OLE, đoạn văn, danh sách, bảng, hình ảnh, v.v.

Sau đây là các bước sử dụng lớp DocumentBuilder để tạo bảng trong tài liệu Word trong Java.

  • Tạo một đối tượng của lớp Document để tải hoặc tạo tài liệu Word.
  • Tạo một đối tượng của lớp DocumentBuilder.
  • Bắt đầu một bảng bằng phương thức DocumentBuilder.startTable().
  • Chèn một ô bằng phương thức DocumentBuilder.insertCell().
  • (Tùy chọn) Áp dụng định dạng cho ô, chẳng hạn như phông chữ và căn chỉnh.
  • Chèn văn bản vào ô bằng phương thức DocumentBuilder.write().
  • Lặp lại việc chèn ô và văn bản vào ô theo yêu cầu.
  • Kết thúc một hàng khi bạn hoàn tất việc chèn ô bằng phương thức DocumentBuilder.endRow().
  • Kết thúc bảng khi bạn đã chèn tất cả các hàng bằng phương thức DocumentBuilder.endTable().
  • Lưu tài liệu Word bằng phương thức Document.save().

Đoạn mã sau đây cho thấy cách tạo bảng trong tài liệu Word bằng Java.

// Tạo hoặc tải tài liệu.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Tạo một bảng mới và chèn ô.
Table table = builder.startTable();
builder.insertCell();

// Định dạng toàn bảng phải được áp dụng sau khi có ít nhất một hàng trong bảng.
table.setLeftIndent(20.0);

// Đặt chiều cao và xác định quy tắc chiều cao cho hàng tiêu đề.
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");

// Chúng ta không cần chỉ định chiều rộng của ô này vì nó được kế thừa từ ô trước đó.
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);

// Đặt lại chiều cao và xác định quy tắc chiều cao khác cho thân bảng.
builder.getRowFormat().setHeight(30.0);
builder.getRowFormat().setHeightRule(HeightRule.AUTO);
builder.insertCell();
        
// Đặt lại định dạng phông chữ.
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();

// Bàn cuối.
builder.endTable();

// Lưu tài liệu.
doc.save("table.docx");

Sau đây là ảnh chụp màn hình của bảng chúng tôi đã tạo bằng mẫu mã ở trên.

Bảng trong tài liệu Word

Tạo bảng bằng DOM

Mô hình đối tượng tài liệu (DOM) là bản trình bày trong bộ nhớ của tài liệu Word cho phép bạn đọc, thao tác và sửa đổi nội dung cũng như định dạng của tài liệu Word theo chương trình. Các bước sau đây minh họa cách tạo bảng trong tài liệu Word bằng DOM.

  • Tạo một đối tượng của lớp Document để tải hoặc tạo tài liệu Word.
  • Tạo một đối tượng của lớp Table và chèn bảng vào tài liệu bằng phương thức Document.getFirstSection().getBody().appendChild(Table).
  • Tạo một đối tượng của lớp Row và chèn nó vào bảng bằng phương thức Table.appendChild(Row).
  • Tạo một đối tượng của lớp Ô, đặt các tùy chọn định dạng và thêm văn bản vào ô.
  • Chèn ô vào hàng bằng phương thức Row.appendChild(Cell).
  • Lặp lại quy trình cho bao nhiêu hàng tùy thích.
  • Lưu tài liệu Word bằng phương thức Document.save().

Đoạn mã sau đây cho thấy cách tạo bảng trong tài liệu Word bằng Java.

// Tạo hoặc tải tài liệu.
Document doc = new Document();
        
// Chúng ta bắt đầu bằng cách tạo đối tượng bảng. Lưu ý rằng chúng ta phải truyền đối tượng tài liệu
// tới hàm tạo của mỗi nút. Điều này là do mọi nút chúng tôi tạo phải thuộc về
// tới một tài liệu nào đó.
Table table = new Table(doc);
doc.getFirstSection().getBody().appendChild(table);

// Ở đây chúng ta có thể gọi EnsureMinimum để tạo các hàng và ô cho chúng ta. Phương pháp này được sử dụng
// để đảm bảo rằng nút được chỉ định là hợp lệ. Trong trường hợp này, một bảng hợp lệ phải có ít nhất một Hàng và một ô.

// Thay vào đó, chúng ta sẽ tự xử lý việc tạo hàng và bảng.
// Đây sẽ là cách tốt nhất để làm điều này nếu chúng ta tạo một bảng bên trong một thuật toán.
Row row = new Row(doc);
row.getRowFormat().setAllowBreakAcrossPages(true);
table.appendChild(row);

// Bây giờ chúng ta có thể áp dụng bất kỳ cài đặt tự động điều chỉnh nào.
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);

// Sau đó, chúng tôi sẽ lặp lại quy trình cho các ô và hàng khác trong bảng.
// Chúng ta cũng có thể tăng tốc mọi thứ bằng cách sao chép các ô và hàng hiện có.
row.appendChild(cell.deepClone(false));
row.getLastCell().appendChild(new Paragraph(doc));
row.getLastCell().getFirstParagraph().appendChild(new Run(doc, "Row 1, Cell 2 Text"));

// Lưu tài liệu.
doc.save("table.docx");

Chèn bảng lồng nhau trong tài liệu Word

Cũng có thể xảy ra trường hợp bạn cần tạo một bảng lồng nhau, bảng này nằm bên trong một ô của bảng cha. Bạn có thể làm điều đó mà không cần trải qua một quá trình phức tạp. Đầu tiên, tạo một bảng cha, sau đó gọi phương thức DocumentBuilder.moveTo(Cell.getFirstParagraph()) để di chuyển điều khiển vào bên trong ô mong muốn của bảng cha. Sau khi hoàn tất, hãy tạo một bảng mới theo cách tương tự.

Đoạn mã sau đây cho biết cách tạo bảng lồng nhau trong tài liệu Word bằng Java.

// Tạo hoặc tải tài liệu.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Chèn ô.
Cell cell = builder.insertCell();
builder.writeln("Outer Table Cell 1");

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

// Lệnh gọi này rất quan trọng để tạo một bảng lồng nhau trong bảng đầu tiên. 
// Nếu không có lệnh gọi này, các ô được chèn bên dưới sẽ được thêm vào bảng bên ngoài.
builder.endTable();

// Di chuyển đến ô đầu tiên của bảng bên ngoài.
builder.moveTo(cell.getFirstParagraph());

// Xây dựng bảng bên trong.
builder.insertCell();
builder.writeln("Inner Table Cell 1");
builder.insertCell();
builder.writeln("Inner Table Cell 2");
builder.endTable();

// Lưu tài liệu.
doc.save("table.docx");

Sau đây là ảnh chụp màn hình của bảng lồng nhau mà chúng tôi đã tạo ở trên.

Nested Table in a Word Document

Tạo bảng Word từ HTML trong Java

Bạn cũng có thể tạo bảng trong tài liệu Word bằng chuỗi HTML và đây là các bước cần thực hiện.

  • Tạo một đối tượng của lớp Document để tải hoặc tạo tài liệu Word.
  • Tạo một đối tượng của lớp DocumentBuilder.
  • Chèn chuỗi HTML của bảng vào tài liệu bằng phương thức DocumentBuilder.insertHtml(String).
  • Cuối cùng, lưu tài liệu bằng phương thức Document.save().

Dưới đây là đoạn mã để tạo bảng Word từ chuỗi HTML.

// Tạo hoặc tải tài liệu.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Lưu ý rằng AutoFitSettings không áp dụng cho các bảng được chèn từ 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>");

// Lưu tài liệu.
doc.save("table.docx");

Nhận giấy phép miễn phí

Bạn có thể nhận giấy phép tạm thời để sử dụng Aspose.Words for Java mà không bị giới hạn về đánh giá.

Phần kết luận

Trong bài đăng blog này, chúng tôi đã khám phá cách tạo bảng trong tài liệu Word bằng Java. Bạn đã thấy cách tạo bảng bằng trình tạo tài liệu hoặc DOM, tạo bảng lồng nhau và tạo bảng từ chuỗi HTML. Bằng cách cài đặt thư viện và làm theo hướng dẫn, bạn có thể dễ dàng tích hợp tính năng tạo bảng vào ứng dụng Java của mình.

Aspose.Words for Java cung cấp nhiều tính năng và tùy chọn định dạng khác, cho phép bạn tạo các tài liệu phong phú và phức tạp một cách dễ dàng. Để tìm hiểu thêm về Aspose.Words for Java, hãy khám phá tài liệu và [ví dụ] mở rộng của nó. Trong trường hợp có bất kỳ câu hỏi nào, vui lòng cho chúng tôi biết qua diễn đàn của chúng tôi.

Xem thêm