Python docx thêm hàng vào bảng

Nếu có siêu liên kết hoặc hình ảnh trong các ô đã xóa, tôi nghĩ điều tồi tệ nhất có thể xảy ra là tài liệu sẽ mang theo một đối tượng mồ côi trong một thời gian. Tôi nghi ngờ Word sẽ xóa nó trong lần lưu tiếp theo, nhưng tôi chưa thử. Cũng có thể nó sẽ phát sinh lỗi "cần sửa chữa" trong lần tải đầu tiên. Vì vậy, nếu đó là một vấn đề bạn có thể muốn thử nghiệm. Tất nhiên, chúng tôi không bao giờ dựa vào loại hành vi đó trong thư viện, vì vậy ít nhất tôi không có bất kỳ trải nghiệm cá nhân nào với hành vi đó

Ngoài "Tạo văn bản", Word có thể được sử dụng để "Chèn hình ảnh, Hình dạng và Bảng" và "Thiết lập Đầu trang/Chân trang", "xác định kiểu" và hơn thế nữa. Vì lý do này, các bài viết được giải thích dưới dạng một loạt nhiều bài viết về mỗi chủ đề, như thể hiện trong mục lục sau

<【Python×Word】Danh sách nội dung>Python×Word】Contents List>

  • Phần. 1】Tổng quan về Thư viện và Cơ bản về Tài liệu >>
    1. Cấu trúc phân cấp của Đối tượng trong python-docx >>
    2. Quản lý câu theo Đoạn văn >>
    3. Định dạng từng ký tự >>
  • 【Phần. 2】Chèn hình ảnh và bảng, phần vào tài liệu >>
    1. Chèn hình ảnh trực tuyến >>
    2. Chèn bảng >>
    3. Quản lý cấu trúc tài liệu trong phần >>
  • 【Phần. 3】Cách sử dụng và đăng ký Style >>
    1. Áp dụng Kiểu dựng sẵn >>
    2. Kiểu đoạn văn >>
    3. Kiểu ký tự >>
    4. Kiểu bảng >>
    5. Đăng ký Kiểu do người dùng xác định >>

Trong phần thứ hai của loạt bài này, chúng tôi sẽ giải thích “ Cách chèn hình ảnh và bảng vào tài liệu Word ” và “ Setting up headers and footers” as examples of how to use sections.

Mặc dù nội dung chính của Tài liệu Word là văn bản, nhưng việc sử dụng hiệu quả Hình ảnh và Bảng có thể nâng cao sức hấp dẫn và độ tin cậy của nó. Đây là nội dung đặc biệt cần thiết cho các văn bản chính thống, văn bản như luận văn, bình luận.

Đối với các tài liệu lớn hơn, bạn cũng nên xem xét triển khai các phần, là các đơn vị quản lý trang

“python-docx” có thể làm tất cả những điều này và hơn thế nữa .

Hãy đồng hành cùng chúng tôi cho đến hết bài viết này, vì bạn sẽ có thể “ làm và hiểu ” những điều sau

Những gì bạn có thể học được từ bài viết này

  • Chèn hình ảnh (đối tượng InlineShape) vào đoạn văn
  • Định nghĩa bảng (đối tượng Table) và chèn vào đoạn văn
  • Tổng quan về các đối tượng Mục liên quan đến quản lý trang, chẳng hạn như tiêu đề và lề, v.v...

Việc sử dụng các lớp và hàm khác nhau được giới thiệu trong bài viết này chỉ là một ví dụ. Đối số tùy chọn được bỏ qua, vì vậy vui lòng tham khảo tài liệu chính thức ở trên để biết chi tiết và làm rõ nếu cần

https. // trăn-docx. đọcthedocs. io/vi/mới nhất/

Bây giờ, từ phần tiếp theo, chúng tôi sẽ giải thích cách sử dụng thư viện “python-docx”

nội dung

  • 1. Chèn hình ảnh vào tài liệu
    • 1. 1 Chèn hình ảnh vào đoạn văn (Đối tượng đoạn văn)
    • 1. 2 Chèn hình ảnh vào câu
  • 2. Chèn bảng (Đối tượng bảng)
  • 3. Mục Triển khai (quản lý trang)
    • 3. 1 Mục là gì?
    • 3. 2 Nhận và Đặt Phần (Đối tượng Phần)
    • 3. 3 Sử dụng Phần (Đặt Đầu trang/Chân trang)
  • 4. Bản tóm tắt

スポンサーリンク

1. Chèn hình ảnh vào tài liệu

Python docx thêm hàng vào bảng

Phần này mô tả quy trình chèn hình ảnh vào tài liệu

Hình ảnh có thể được đặt trong đoạn văn ( Đối tượng đoạn văn ). Nó cũng có thể được nhúng trong văn bản ( Đối tượng chạy ) tạo nên đoạn văn.

Python-docx có thể xử lý hình ảnh và biểu đồ trong tài liệu Word miễn là chúng ở dạng InlineShape(Picture)[Text Layer], nhưng FloatingShape[Drawing Layer] không được hỗ trợ vì .

Nội tuyến (TextLayter) có nghĩa là nhúng vào đoạn văn hoặc một phần của câu và đề cập đến hệ thống phân cấp trong đó ký tự và hình ảnh giao thoa với nhau về chiều cao, chiều rộng và ngắt dòng

Mặt khác, Nổi (Lớp vẽ), phân biệt các lớp sắp xếp cho đoạn văn và hình ảnh, cho phép sắp xếp hình ảnh và biểu đồ tự do mà không can thiệp lẫn nhau

Hiểu hình ảnh và các hình dạng khác

Tại thời điểm viết bài, python-docx chỉ hỗ trợ ảnh nội tuyến. Hình ảnh nổi có thể được thêm vào. Nếu bạn có trường hợp sử dụng đang hoạt động, hãy gửi yêu cầu tính năng trên trình theo dõi vấn đề

https. // trăn-docx. đọcthedocs. io/vi/mới nhất/người dùng/hình dạng. html

Ngoài ra, tôi rất tiếc phải nói rằng “python-docx” dường như không hỗ trợ thao tác với hình dạng và SmartArt, ngay cả với InlineShape. Expect future updates along with support for Floating (Drawing Layer).

Sau đây là tóm tắt về hiện trạng hỗ trợ hình ảnh và đồ họa. (Hình1)

Python docx thêm hàng vào bảng
Hình1. Tóm tắt trạng thái hỗ trợ đối tượng Shape

Ngoài ra, có hai cách để đặt và truy xuất hình dạng cũng như SmartArt [Hình dạng trong dòng/hình nổi] . Bạn có thể sử dụng “python-docx” và “pywin32” tùy theo mục đích của bạn.

  • Nhận và đặt làm đối tượng Hình dạng trong “thư viện pywin32”
  • Sau khi chuyển đổi tài liệu Word thành tệp XML, cấu trúc DOM được phân tích cú pháp để lấy các đối tượng

Bây giờ, từ phần tiếp theo, chúng tôi sẽ giải thích các lớp và phương thức để chèn hình ảnh vào đoạn văn.

1. 1 Chèn hình ảnh vào đoạn văn (Đối tượng đoạn văn)

Hình ảnh có thể được đặt thành một đoạn văn. Nếu bạn chỉ muốn chèn một hình ảnh vào đoạn mới thêm, hãy sử dụng phương thức add_picture() trong đối tượng Tài liệu với định dạng sau.

đối tượng đoạn văn

Đối tượng tài liệu . add_picture(img_path, chiều rộng, height)


arg. img_path . Chỉ định tên tệp hình ảnh với đường dẫn (jpg/png…)

arg. chiều rộng . Đặt chiều rộng hình ảnh (tùy chọn)

arg. chiều cao . Đặt chiều cao hình ảnh (tùy chọn)

trả về. Đối tượng InlineShape

Tệp hình ảnh được hỗ trợ ở định dạng jpg/png, với các đối số chiều rộng/chiều cao để chỉ định kích thước hình ảnh (cả hai tùy chọn). Đơn vị được chỉ định bằng mm (milimet) hoặc Inch, nhưng nếu bỏ qua, kích thước ban đầu sẽ được áp dụng.

Nếu chỉ một trong số chúng được chỉ định, tỷ lệ khung hình tương tự sẽ tự động được điều chỉnh

MẪU (1)

Hãy để chúng tôi chỉ cho bạn cách sử dụng nó với mã mẫu

Tóm tắt mã là ba hình ảnh được dán bằng phương thức add_picture(). Lưu ý rằng một đoạn văn mới được thêm vào và một hình ảnh được chèn vào

from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH # Paragraph position definition
from docx.shared import Mm                    # Definition of unit and color

doc1=Document()

# Paragraph "1"
p1 = doc1.add_paragraph('Insert image1(png).')
# Insert png image (50mm width) in paragraph "2”
doc1.add_picture('./picture/picture1.png', width=Mm(50))

# Paragraph "3"
p3 = doc1.add_paragraph('Insert image2(png).')
# Insert jpeg image (50mm width) in paragraph "4”
doc1.add_picture('./picture/picture2.jpg', width=Mm(50))

# Paragraph "5"
p5 = doc1.add_paragraph('Insert image3(png).')
# Insert png image (50mm width) in paragraph "6”
doc1.add_picture('./picture/picture3.png', height=Mm(50))

print(len(doc1.paragraphs)) # >>6 Find out the number of paragraph

for p_index in [0, 1, 4, 5]:
    # The image is recognized as InlineShape object, and the insertion position
    # can be roughly specified with the alignment property.

    doc1.paragraphs[p_index].paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER

doc1.save('InsertImage_List1.docx')

Kết quả thực hiện của như sau. Ba hình ảnh được chèn vào và số lượng đoạn văn là sáu, bao gồm cả những đoạn được thêm bằng phương thức add_picture()

Bạn cũng có thể kiểm tra xem định dạng đoạn văn có được áp dụng hay không bằng cách căn giữa căn chỉnh trong thuộc tính căn chỉnh của đoạn văn (Đối tượng đoạn văn).

The execution result file (.docx) of can be downloaded from

ChènImage_List1. docxTải xuống

Python docx thêm hàng vào bảng
Hình2. Kết quả thực hiện List1

1. 2 Chèn hình ảnh vào câu

Hình ảnh cũng có thể được chèn vào bất cứ đâu trong văn bản. Các câu (từ và ký tự) được quản lý bởi đối tượng Run, nhưng phương thức add_picture() cũng được cung cấp trong đối tượng Run. Định dạng hoàn toàn giống với định dạng trong đối tượng Đoạn văn.

Chạy đối tượng

Đối tượng tài liệu . add_picture(img_path, chiều rộng, height)


arg. img_path . Chỉ định tên tệp hình ảnh với đường dẫn (jpg/png…)

arg. chiều rộng . Đặt chiều rộng hình ảnh (tùy chọn)

arg. chiều cao . Đặt chiều cao hình ảnh (tùy chọn)

trả về. Đối tượng InlineShape

Cách dùng cũng giống như khi đặt nó trong đoạn. Một đối tượng InlineShape được chèn trên cùng một dòng với nội dung văn bản

MẪU (2)

Đây là một ví dụ khác về việc sử dụng phương thức add_picture() với mã mẫu.

from docx import Document
from docx.shared import Mm

doc1=Document()

# Paragraph "1"
p1 = doc1.add_paragraph(style='Title')

# Inserting image in the middle of sentence with the add_picture method
p1.add_run().add_picture('./picture/picture1.png', width=Mm(15))
p1.add_run(' Inserting an image with ')

p1.add_run().add_picture('./picture/picture2.jpg', width=Mm(15))
p1.add_run(' the add_pictur of the Run object ')

p1.add_run().add_picture('./picture/picture3.png', height=Mm(15))


doc1.save('InsertImage2_List2.docx')

The execution result of is as follows.

Đối với đoạn có 'Kiểu tiêu đề', 'Văn bản' và 'Hình ảnh' được chèn luân phiên trong khi thêm đối tượng Run

The execution result file (.docx) of can be downloaded from

ChènImage2_List2. docxTải xuống

Python docx thêm hàng vào bảng
Hình 3. Kết quả thực thi của List2

スポンサーリンク

2. Chèn bảng (Đối tượng bảng)

Python docx thêm hàng vào bảng

Bảng có thể được chèn vào tài liệu

Bảng được quản lý dưới dạng đối tượng Bảng trong python-docx. Đối tượng Bảng lấy phương thức add_table() của đối tượng Tài liệu theo định dạng sau.

đối tượng bảng

Đối tượng tài liệu . add_table(hàng, cols, style)


arg:hàng . Chỉ định số hàng trong bảng

arg:cols . Chỉ định số cột trong bảng

arg:kiểu . Chỉ định kiểu sẽ được đặt cho bảng (tùy chọn)

trả về. Đối tượng bảng

Số lượng hàng và cột trong bảng được chỉ định trong arg. hàng/cột tương ứng.

Mẫu (kiểu dựng sẵn), chẳng hạn như sắc thái và hình ảnh của toàn bộ bảng, có thể được chỉ định trong arg. style dưới dạng chuỗi.

Kiểu dựng sẵn cung cấp các thông tin sau. (Hình4)

Python docx thêm hàng vào bảng
Hình4. Danh sách Kiểu dựng sẵn cho Bảng (trích đoạn)

Đối tượng Table còn bao gồm đối tượng Column(s), Row(s) object và Cell(s) object. (Hình5)

Đối tượng Bảng là tập hợp các hàng, cột hoặc ô và đối tượng Cột/Hàng cũng là tập hợp các ô. Do đó, đối tượng cấp cao hơn có thể lặp lại lấy phần tử cấp thấp hơn

Python docx thêm hàng vào bảng
Hình5. Các thành phần của đối tượng Table

Có nhiều phương thức và thuộc tính liên quan trong đối tượng Table. Những cái chính như sau

đối tượng bảng

< Thêm cột vào cuối bên phải >

Đối tượng bảng . add_column(chiều rộng)

arg:chiều rộng . Chỉ định chiều rộng cột

trả về. Đối tượng cột / Thêm vào bộ sưu tập cột


< Thêm Hàng vào cạnh dưới >

Đối tượng bảng . add_row()

trả về. Đối tượng hàng / Thêm vào bộ sưu tập hàng


< Nhận tập hợp cột (Cột)>

Đối tượng bảng . cột thuộc tính

trả về. Bộ sưu tập cột

(Cũng có thể chỉ định cột cụ thể là chỉ mục, cột[chỉ mục])


< Lấy tập hợp hàng (Hàng)>

Đối tượng bảng . hàng thuộc tính

trả về. Bộ sưu tập hàng

(Cũng có thể chỉ định hàng cụ thể làm chỉ mục, rows[index])


< Lấy ô (Đối tượng ô)>

Đối tượng bảng. ô( row_idx , col_idx)

arg. row_idx . Chỉ định số hàng của ô mua lại. Ô A1 là (0, 0) chuẩn

arg. col_idx . Chỉ định số cột của ô mua lại. Ô A1 là (0, 0) chuẩn

return:Đối tượng ô

Các thuộc tính chính khác liên quan đến đối tượng Hàng, Cột và Ô bao gồm:. Đối tượng Cell có nhiều thuộc tính khác. Bạn cũng có thể thêm một đối tượng Đoạn văn vào một ô để làm điều tương tự như văn bản nội dung. (Đối với đoạn văn, vui lòng tham khảo bài viết đầu tiên trong loạt bài này. )

【Hàng/Cột/Đối tượng ô 】【Chức năng】【Khác/Chi tiết】Đối tượng cột . thuộc tính chiều rộng propertyĐặt chiều rộng cộtĐối tượng hàng . thuộc tính height propertyĐặt chiều cao của hàngĐối tượng ô . text property Đặt/Nhận giá trị cho ôĐối tượng ô . add_paragraphs(văn bản, kiểu)Add paragraphSimilar to paragraph of text

Bảng 1. Các thuộc tính chính của đối tượng hàng, cột và ô

MẪU (3)

Đây là một đoạn code mẫu để thiết lập Table trong tài liệu

Dưới đây là tổng quan về mã. Trước tiên, hãy bắt đầu với Xác định bảng có 4 hàng và 4 cột ô. Sau đó, mỗi đối tượng Ô được truy cập và các giá trị cũng như định dạng của nó được đặt

from docx import Document
from docx.enum.table import WD_ALIGN_VERTICAL # Definition of placement location
from docx.shared import Mm  # Definition of unit and color

# Define column labels
col_names = ['Name', 'Belongs', 'Salary']

# Definition of data contents
data = [['Ryunosuke Akutagawa', 'General.Dep', '245000'],
       ['Soseki Natsume', 'Account.Dep', '350000'],
       ['Takuboku Ishikawa', 'Sales.Dep', '298000']]

doc1 = Document()

#(A)---------------------------------------------------------------------------------------------------------------
# Obtain a 1-row, 3-column Table object
tb1 = doc1.add_table(rows=1, cols=len(col_names), style='Colorful Shading Accent 1')

#(B)---------------------------------------------------------------------------------------------------------------
# Set the column name to the cell in the first row
for i, cell in enumerate(tb1.rows[0].cells): # Get collection of Cell objects
    cell.text = col_names[i]                  # Set value to Cell object

#(C)---------------------------------------------------------------------------------------------------------------
# Set values while adding rows (Row objects)
for d in data:
    row = tb1.add_row()   # Add Row Object
    row.height = Mm(8.0)  # Specify row height as 8mm
    
    for i, cell in enumerate(row.cells): # Obtaining Cell object
        cell.text = d[i]                  # Set value to Cell object
        cell.vertical_alignment = WD_ALIGN_VERTICAL.BOTTOM  # Set placement position in the cell

#(C)---------------------------------------------------------------------------------------------------------------
# Add column (Column object) 
tb1.add_column(Mm(15.0))       # Add row 15 mm wide
print(tb1.columns[3].width.mm) # >>14.993

tb1.cell(0, 3).text = 'Remarks'   # Set titles for additional column


doc1.save('InsertTable_List3.docx')

Bây giờ, hãy để tôi giải thích những điểm chính

Chuẩn bị tập dữ liệu cho bảng ở dòng 6 và 9

Dòng 17:【Thêm đối tượng Bảng】

Phương thức add_table() tạo đối tượng Bảng có kích thước 1×3. Đặt kiểu bảng dựng sẵn thành arg. style , và lưu trữ đối tượng Table trong biến tb1.

Dòng 21,22:【Đặt nhãn Cột cho ô】

Bộ sưu tập ô có được với thuộc tính ô được mở rộng bằng câu lệnh For. Sau đó, đối tượng Cell được nhận. Sau đó, đặt nhãn cho từng ô bằng thuộc tính văn bản của đối tượng Ô đã thu được.

Dòng 26-28:【Thêm hàng(Đối tượng hàng)】

Số lượng hàng (đối tượng Hàng) bắt buộc được thêm bằng cách sử dụng phương thức add_row() . Thuộc tính height cũng chỉ định chiều cao của hàng.

Dòng 30-32:【Đặt giá trị trong ô】

Mở rộng từ đối tượng Hàng sang đối tượng Ô bằng câu lệnh For và đặt giá trị của Danh sách.

Đồng thời, thuộc tính vertical_alignment chỉ định căn lề dưới cùng trong ô.

Cuối cùng, hãy thêm đối tượng Coloumn bằng phương thức add_column() để thêm cột “Nhận xét”, hoàn thành bảng 4×4.

The execution result of is as follows.

Kiểu dáng, kích thước, chiều rộng, chiều cao và các kích thước khác đã được chỉ định và bảng đẹp mắt đã được chèn vào

The execution result file (.docx) of can be downloaded from

ChènTable_List3. docxTải xuống

Python docx thêm hàng vào bảng
Hình6. Kết quả thực thi List3

スポンサーリンク

3. Mục Triển khai (quản lý trang)

Python docx thêm hàng vào bảng

Trong phần này, chúng tôi sẽ giải thích cách quản lý các trang theo phần. python-doc cung cấp chức năng phần

3. 1 Mục là gì?

“Section” trong Word là đơn vị quản lý trang. Cụ thể, nó cho phép bạn đặt kích thước trang, lề, hướng giấy, đầu trang/cuối trang… cho từng trang hoặc phạm vi trang

Ví dụ, Hình 7 hiển thị một trường hợp trong đó tất cả 7 trang của Tài liệu Word được phân thành 3 phần (A, B và C) để quản lý trang. Bạn có thể đặt và thay đổi thông tin trang như thông tin đầu trang và chân trang và hướng giấy cho từng phạm vi trang theo cách này

Python docx thêm hàng vào bảng
Hình7. Các phần trong Word

Trong python-docx, các phần được quản lý bởi đối tượng Phần .

3. 2 Nhận và Đặt Phần (Đối tượng Phần)

Để thêm đối tượng Phần mới hoặc lấy đối tượng hiện có, hãy sử dụng phương thức add_section() . under the Document object, respectively.

Nhận đối tượng phần

< Thêm mục mới >

Đối tượng tài liệu . add_section(start_type)

arg. start_type . Chọn loại Mục sẽ được thêm từ định nghĩa “lớp WD_SECTION_START”.

trả về. Đối tượng phần


< Nhận phần >

Đối tượng tài liệu . phần thuộc tính

trả về. Bộ sưu tập của Đối tượng Mục

The arg. start_type của add_section() phương thức chỉ định một Enum được xác định trong WD_SECTION_START . Sự tương ứng với giao diện người dùng Word được hiển thị trong Fig8. . The correspondence to the Word UI is shown in Fig8.

(“Menu Bố cục” -> “Tab Thiết lập Trang” -> “Phân cách”)

Python docx thêm hàng vào bảng
Hình8. Loại ngắt đoạn

Các thuộc tính liên quan của đối tượng Phần cho phép “Thiết lập trang” được chỉ định chi tiết cho từng Phần. Tham khảo hình bên dưới để xem các thuộc tính nào được hỗ trợ bởi các mục cài đặt trên “Hộp thoại thiết lập trang” trong giao diện người dùng Word

< Cài đặt ký quỹ >

Python docx thêm hàng vào bảng
Fig9. Section object

< Cài đặt giấy >

Python docx thêm hàng vào bảng
Fig10. Section object

Python docx thêm hàng vào bảng
Fig11. Section object

Đây là một điều cần lưu ý về đối tượng Mục. Nhiều đối tượng Phần có thể được xác định trong một Tài liệu duy nhất, nhưng trong cấu hình mặc định, tất cả chúng đều nằm trong mối quan hệ kế thừa (được liên kết với nhau)

Điều này có nghĩa là phần hiện tại có thể không được định cấu hình như dự định, vì phần hiện tại có định nghĩa cho một phần trước đó

Để ngăn chặn điều này, phải sử dụng thuộc tính is_linked_to_previous sau để phá vỡ rõ ràng mối quan hệ thừa kế (được đặt thành Sai). (* Lưu ý rằng điều này không đúng. )

Mục đối tượng

< Kế thừa phần >

Đối tượng mục . thuộc tính is_linked_to_previous property

Đúng . Kế thừa thông tin phần trước

Sai . Chỉ phản ánh cài đặt của phần hiện tại

Để làm ví dụ về việc sử dụng Phần, phần tiếp theo sẽ thảo luận về cách áp dụng “Đầu trang/Chân trang”

3. 3 Sử dụng Phần (Đặt Đầu trang/Chân trang)

Mục đích của việc sử dụng phần thường được tìm thấy trong cài đặt “Đầu trang và Chân trang” của trang. Phần này cung cấp các ví dụ cụ thể về cài đặt “Đầu trang và Chân trang”

Đối tượng Header và Footer được lấy từ thuộc tính headerfooter of the Section object.

Đối tượng _Header/_Footer

Đối tượng mục . thuộc tính tiêu đề property

trả về. _Đối tượng tiêu đề


Đối tượng mục . footer thuộc tính

trả về. _Đối tượng chân trang

Để thêm nội dung vào đối tượng _Header(_Footer) thu được, hãy thêm đoạn văn bằng cách sử dụng phương thức add_paragraph() như khi tạo văn bản nội dung. Vui lòng tham khảo

Các phương thức chính khác và các thuộc tính khác liên quan đến Header (Footer) như sau

Đối tượng_Header(_Footer)【Chức năng】【Khác/Chi tiết】add_paragraph(văn bản, < . số hàng, style)Add paragraphParagraph Objectadd_table(rows, cols, width)Add tablerows:number of rows, cols . số cột, chiều rộng . widthis_linked_to_previous thuộc tínhThông tin đầu trang (chân trang) trước đó có được kế thừa hay khôngTrue:Valid/False:Invalid

Ban 2. Các phương thức và thuộc tính chính trong đối tượng _Header(_Footer)

MẪU (4)

Đây là một ví dụ về mã sử dụng đối tượng Mục

Định dạng trang (khổ giấy, lề, hướng in) và đầu trang và chân trang được chọn và đặt cho từng phần

from docx import Document
from docx.enum.section import WD_SECTION

from docx.shared import Mm  # Defined unit and color
from docx.enum.section import WD_ORIENT # The page orientation is defined

from docx.enum.text import WD_ALIGN_PARAGRAPH


# Create new Document
doc1 = Document()

# Specify "-1" for index to get current section
sec1 = doc1.sections[-1]

# Check the current section type
# Newly created document contain one section (NEW_PAGE) by default
print(sec1.start_type) # >>NEW_PAGE (2)

#-------------------------------------------------------------------------------------
# Examine the format of page in Section1

# Section1 page setup (page orientation, width, height)
print(sec1.orientation, sec1.page_width.mm, sec1.page_height.mm) # >>PORTRAIT (0) 215.9 279.4

# Section1 Page Setup(Margin(Left), Margin(Right))
print(sec1.left_margin.mm, sec1.left_margin.mm) # >> 31.75 31.75

# Section1 Page Setup (Margin(Top), Margin(Bottom))
print(sec1.top_margin.mm, sec1.bottom_margin.mm) # >> 25.4 25.4

#-------------------------------------------------------------------------------------
# Set the header and footer for section1

# Get the Header object
hd1 = sec1.header

# Add a paragraph(Header)
hd1_pg = hd1.add_paragraph('CONFIDENTIAL_マル秘')

# Get the Footer object
ft1 = sec1.footer

# Add a paragraph(Footer)
ft1_pg = ft1.add_paragraph('株式会社 Pythonでもっと自由を')

# Set paragraph position to right end
ft1_pg.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.RIGHT


#-------------------------------------------------------------------------------------
# Add section2 to format the page

# Add a new section (NEW_PAGE)
sec2= doc1.add_section(WD_SECTION.NEW_PAGE)

print(sec2.start_type) # >>NEW_PAGE (2)

# Change the print orientation to landscape
sec2.orientation = WD_ORIENT.LANDSCAPE

# Set the width of section2
sec2.page_width = Mm(279.4)

#  Set the height of section2
sec2.page_height = Mm(215.9)


#-------------------------------------------------------------------------------------
# Set the header and footer for section2

hd2 = sec2.header
ft2 = sec2.footer

# Can cite the header footer of the previous section


hd2.is_linked_to_previous = False # Do not cite Section1 Header

ft2.is_linked_to_previous = True # Cite the footer in Section1

doc1.save('InsertSection_List4.docx')

Bây giờ, hãy để tôi giải thích những điểm chính

Dòng 14:【Phần tài liệu mới】

Thuộc tính phần được sử dụng để truy xuất tất cả các đối tượng phần (Bộ sưu tập) trong tài liệu. Lập chỉ mục cho phép bạn truy xuất các đối tượng Phần riêng lẻ. Ngoài ra, chỉ định [-1] sẽ nhận được phần trang hiện tại. (Đối với tài liệu mới tạo như tài liệu này, Phần (NEW_PAGE) đã được chuẩn bị trước. )

Dòng 24,26,30:【Kiểm tra định dạng trang】

Các thuộc tính của đối tượng Mục kiểm tra thông tin định dạng của trang. Thuộc tính orientation kiểm tra hướng trang, thuộc tính page_* kiểm tra hướng . Đơn vị được chuyển đổi sang milimét bằng thuộc tính *_margin property checks the margins. Units are converted to millimeters with the mm .

Dòng 36-48:【Cài đặt Header/Footer】

Đầu trang và Chân trang được đặt cho đối tượng Phần. Các đối tượng được lấy bằng cách sử dụng tiêu đềthuộc tính chân trang , tương ứng. Nội dung được quản lý giống như văn bản nội dung, sử dụng đối tượng Đoạn văn. Nó có thể bao gồm nhiều đoạn văn và các cách sử dụng khác được xử lý như nhau. Nó có thể bao gồm nhiều đoạn văn và các cách sử dụng khác được xử lý như nhau.

Một phần khác được thêm vào trong dòng 55~66 (var. ”sec2″). Vì loại được đặt thành “NEW_PAGE”, phần này sẽ được áp dụng cho trang thứ hai và các trang tiếp theo

Dòng 72-80:【Áp dụng phần thứ hai】

Thiết lập đầu trang và chân trang cho Phần thứ hai (sec2). Khi tồn tại nhiều Section, cần chú ý đến mối quan hệ kế thừa (liên kết) giữa các Section

Thuộc tính is_linked_to_previous cho phép bạn chọn có trích dẫn thông tin đầu trang và chân trang từ một phần trước hay không. Trong ví dụ này, tiêu đề được đặt thành “Sai” để nó không được trích dẫn (sec2 được áp dụng) và chân trang được đặt thành “True” để thông tin chân trang trước đó được trích dẫn.

* Xin lưu ý rằng rất dễ nhầm lẫn giữa hai

The execution result of is as follows

Định dạng trang (khổ giấy, lề, hướng giấy), Header và Footer có thể được thiết lập cho từng phần (trang)

  • Trang 1 (Phần 1). với Đầu trang/Chân trang, hướng dọc
  • Trang 2 (Phần 2). Chân trang (liên kết đến Phần 1), hướng ngang

Python docx thêm hàng vào bảng
Hình12. Kết quả thực hiện List4

4. Bản tóm tắt

Python docx thêm hàng vào bảng

Nó thế nào?

Trong bài viết này, chúng tôi đã giải thích cách sử dụng thư viện “ python-docx ” để chèn hình ảnh và bảng cũng như cách quản lý .

Mặc dù nội dung chính của “Lời” là Phần Thân (văn bản), nhưng “Hình” và “Bảng” có thể được sử dụng để tăng tính hấp dẫn và độ tin cậy. Điều này đặc biệt đúng đối với các tài liệu chính thức, được viết tốt như bài báo, bài bình luận, v.v.

Ngoài ra, bằng cách tự động hóa quản lý phần, có thể “Chỉnh sửa hàng loạt tài liệu cùng một lúc”

Chúng tôi hy vọng bạn sẽ sử dụng Python để nâng cao hiệu quả cho “Công việc Word” của mình .

Cuối cùng, hãy để tôi tóm tắt những điểm chính của bài viết này

  • Có thể chèn hình ảnh bằng python-docx. Bản thân Word có thể chèn ảnh 2 lớp nhưng thư viện này chỉ hỗ trợ được “Inline Layer”. Để hỗ trợ hình ảnh Lớp vẽ, bạn cần thử một thư viện hoặc phương pháp khác
  • Bảng (Đối tượng bảng) có thể được tạo và thêm vào Tài liệu. Kiểu bảng và các thuộc tính khác được cung cấp để cải thiện hình thức của bảng
  • Việc định dạng trang và quản lý Header/Footer được thực hiện với đối tượng Section. Nó có thể được lấy và thiết lập với các thuộc tính chuyên dụng
  • python-docx không thể điều khiển hình dạng và nghệ thuật thông minh. Do đó, nên thử một thư viện hoặc phương pháp khác. (Mong đợi các bản cập nhật trong tương lai)


Bây giờ, trong số tiếp theo, chúng ta sẽ thảo luận về cách áp dụng “Kiểu” cho tài liệu

Có nhiều mục đích khác nhau để tạo văn bản trong Word. Nó có thể dành cho “Viết chính thức và trang trọng” “Viết theo phong cách tiểu luận” hoặc “Những câu thông tục thân thiện và thân thiện”…

Như vậy, tùy theo mục đích mà phong cách viết (phông chữ, đề mục, tiêu đề) và phong cách viết thường được xác định trước ở một mức độ nào đó.

Bằng cách đăng ký “kiểu câu” này làm kiểu cố định trong Word, nó có thể được sử dụng nhiều lần và hiệu quả

Vì vậy, trong số tiếp theo, chúng tôi sẽ giải thích cách sử dụng “Phong cách”. Xin hãy chờ đợi nó

Liên kết sẽ ở đây. ↓

Python docx thêm hàng vào bảng

【Python×Word】Áp dụng và xác định kiểu trong python-docx

Minh họa cách áp dụng các kiểu có sẵn trong Word và các kiểu do người dùng xác định. Nó cũng hữu ích như một tài liệu tham khảo cho các kiểu dựng sẵn