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

Bảng thường được sử dụng trong tài liệu Word để sắp xếp thông tin theo cấu trúc dạng lưới. Chúng cho phép bạn tóm tắt thông tin dưới dạng hàng và cột. Trong bài viết này, bạn sẽ học cách tạo bảng trong tài liệu Word theo lập trình bằng Python. Hơn nữa, bài viết sẽ đề cập đến cách tạo bảng lồng nhau hoặc sao chép một bảng hiện có trong tài liệu Word.

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

Để làm việc với các bảng trong tài liệu Word, chúng tôi sẽ sử dụng Aspose.Words dành cho Python. Thư viện được thiết kế để tạo và thao tác động các tài liệu Word từ bên trong các ứng dụng Python. Bạn có thể cài đặt thư viện từ PyPI bằng lệnh pip sau.

pip install aspose-words

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

Sau đây là các bước để tạo bảng trong tài liệu Word DOCX bằng Python.

  • Tạo một đối tượng của lớp Document.
  • 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() và lấy tham chiếu của bảng trong một đối tượng.
  • Chèn một ô bằng phương thức DocumentBuilder.insertcell().
  • Đặt định dạng ô bằng thuộc tính DocumentBuilder.cellformat.
  • Đặt tự động điều chỉnh bằng phương pháp autofit (aw.tables.AutoFitBehavior.FIXEDCOLUMNWIDTHS).
  • Đặt căn chỉnh của ô.
  • 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 thành việc chèn ô.
  • Kết thúc bảng khi bạn đã chèn tất cả các hàng.
  • Lưu tài liệu Word bằng phương thức Document.save().

Mẫu mã sau đây cho thấy cách tạo bảng trong tài liệu DOCX bằng Python.

import aspose.words as aw

# Tạo một tài liệu Word mới.
doc = aw.Document()

# Tạo trình xây dựng tài liệu.
builder = aw.DocumentBuilder(doc)

# Bắt đầu bảng.
table = builder.start_table()

# Chèn ô.
builder.insert_cell()

# Định dạng rộng bảng phải được áp dụng sau khi có ít nhất một hàng trong bảng.
table.left_indent = 20.0

# Đặt chiều cao và xác định quy tắc chiều cao cho hàng tiêu đề.
builder.row_format.height = 40.0
builder.row_format.height_rule = aw.HeightRule.AT_LEAST

# Đặt cài đặt căn chỉnh và phông chữ.
builder.paragraph_format.alignment = aw.ParagraphAlignment.CENTER
builder.font.size = 16
builder.font.name = "Arial"
builder.font.bold = True

builder.cell_format.width = 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.insert_cell()
builder.write("Header Row,\n Cell 2")

builder.insert_cell()
builder.cell_format.width = 200.0
builder.write("Header Row,\n Cell 3")
builder.end_row()

builder.cell_format.width = 100.0
builder.cell_format.vertical_alignment = aw.tables.CellVerticalAlignment.CENTER

# Đặt lại chiều cao và xác định quy tắc chiều cao khác cho nội dung bảng.
builder.row_format.height = 30.0
builder.row_format.height_rule = aw.HeightRule.AUTO
builder.insert_cell()

# Đặt lại định dạng phông chữ.
builder.font.size = 12
builder.font.bold = False

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

builder.insert_cell()
builder.cell_format.width = 200.0
builder.write("Row 1, Cell 3 Content")
builder.end_row()

builder.insert_cell()
builder.cell_format.width = 100.0
builder.write("Row 2, Cell 1 Content")

builder.insert_cell()
builder.write("Row 2, Cell 2 Content")

builder.insert_cell()
builder.cell_format.width = 200.0
builder.write("Row 2, Cell 3 Content.")
builder.end_row()

# Bảng kết thúc.
builder.end_table()

# Lưu tài liệu.
doc.save("table_formatted.docx")

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

Table in a Word DOCX Document

Tạo bảng lồng nhau trong tài liệu Word bằng Python

Aspose.Words for Python cũng cho phép bạn tạo một bảng lồng nhau một cách liền mạch. Nói cách khác, bạn có thể tạo một bảng mới trong một ô của bảng. Sau đây là các bước để tạo bảng lồng nhau trong tệp Word DOCX.

  • Tạo một đối tượng của lớp Document.
  • 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() và lấy tham chiếu của bảng trong một đối tượng.
  • Chèn một ô bằng phương thức DocumentBuilder.insertcell() và nhận tham chiếu của ô trong một đối tượng.
  • 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 bảng khi bạn đã chèn tất cả các hàng.
  • Di chuyển điều khiển bên trong ô mong muốn sử dụng phương thức DocumentBuilder.moveto (Cell.firstparagraph).
  • Tạo một bảng khác bằng cách chèn các ô và kết thúc bảng khi hoàn tất.
  • Lưu tài liệu Word bằng phương thức Document.save().

Mẫu mã sau đây cho thấy cách tạo bảng lồng nhau trong tài liệu DOCX bằng Python.

import aspose.words as aw

# Tạo một tài liệu Word mới.
doc = aw.Document()
builder = aw.DocumentBuilder(doc)

# Chèn ô.
cell = builder.insert_cell()
builder.writeln("Outer Table Cell 1")

builder.insert_cell()
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 nối vào bảng bên ngoài.
builder.end_table()

# Di chuyển đến ô đầu tiên của bảng bên ngoài.
builder.move_to(cell.first_paragraph)

# Xây dựng bảng bên trong.
builder.insert_cell()
builder.writeln("Inner Table Cell 1")
builder.insert_cell()
builder.writeln("Inner Table Cell 2")
builder.end_table()

# Lưu tài liệu.
doc.save("table_nested.docx")

Sau đây là kết quả của mẫu mã ở trên.

Nested Table in a Word Document

Sao chép một bảng hiện có trong tài liệu Word bằng Python

Bạn cũng có thể sao chép một bảng hiện có trong tài liệu Word. Sau đây là các bước để thực hiện thao tác này.

  • Tải tài liệu bằng lớp Tài liệu.
  • Nhận tham chiếu của bảng trong một đối tượng bằng cách sử dụng phương thức Document.getchild (NodeType.TABLE, int, boolean) .astable().
  • Gọi phương thức clone (True) .astable() bằng cách sử dụng đối tượng của bảng và nhận tham chiếu của bảng được sao chép trong một đối tượng khác.
  • Chèn bảng được nhân bản bằng phương thức Table.parentnode.insert after().
  • Chèn một đoạn trống giữa các bảng bằng phương thức Table.parentnode.insert after (Paragraph (Document), Table).
  • Lưu tài liệu Word bằng phương thức Document.save().

Mẫu mã sau đây cho thấy cách sao chép một bảng trong tài liệu Word DOCX bằng Python.

import aspose.words as aw

# Tải tài liệu Word.
doc = aw.Document("table_formatted.docx")

# Nhận tham chiếu của bảng mong muốn.
table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table()

# Sao chép bảng và chèn nó vào tài liệu sau bảng gốc.
tableClone = table.clone(True).as_table()
table.parent_node.insert_after(tableClone, table)

# Chèn một đoạn trống giữa hai bảng,
# hoặc nếu không chúng sẽ được kết hợp thành một khi lưu.
table.parent_node.insert_after(aw.Paragraph(doc), table)

# Lưu tài liệu.
doc.save("table_clone.docx")

Ảnh chụp màn hình sau đây cho thấy bảng được sao chép trong tài liệu Word.

Cloned Table in a Word Document

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

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

Sự kết luận

Trong bài viết này, bạn đã học cách tạo bảng trong tài liệu Word bằng Python. Hơn nữa, bạn đã thấy cách tạo bảng lồng nhau hoặc sao chép động các bảng hiện có trong tài liệu Word. Bên cạnh đó, bạn có thể truy cập tài liệu của Aspose.Words dành cho Python để khám phá các tính năng khác. 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

Thông tin: Nếu bạn cần lấy tài liệu Word từ bản trình bày PowerPoint, bạn có thể sử dụng trình chuyển đổi Aspose Trình bày sang Tài liệu Word.