Python docx dòng mới

Python-docx cung cấp rất nhiều tính năng để tạo và chỉnh sửa tài liệu word. Trong hướng dẫn này, chúng tôi sẽ triển khai tính năng table và sử dụng các hàng và cột của bảng để thêm dữ liệu vào bảng. Đối với tài liệu API của các bảng trong python-docx, hãy kiểm tra tài liệu về url này

https. // trăn-docx. đọcthedocs. io/vi/mới nhất/api/bảng. html

Các bảng được xây dựng bằng phương pháp

# access first row's cells
heading_row = table.rows[0].cells

# add headings
heading_row[0].text = "Name"
heading_row[1].text = "Marks"
0 trong tài liệu python-docx. Chúng tôi có thể cung cấp các tùy chọn sau trong khi tạo bảng

  • hàng. Số hàng của bảng
  • cols. Số cột của bảng
  • Phong cách. [mặc định
    # access first row's cells
    heading_row = table.rows[0].cells
    
    # add headings
    heading_row[0].text = "Name"
    heading_row[1].text = "Marks"
    1] Chỉ định kiểu, kiểu có thể là đối tượng kiểu đoạn hoặc tên kiểu đoạn

Để biết danh sách đầy đủ các kiểu bảng, hãy xem trên

Tạo bảng

Cho phép tạo một bảng có 2 hàng và 2 cột bằng phương pháp

# access first row's cells
heading_row = table.rows[0].cells

# add headings
heading_row[0].text = "Name"
heading_row[1].text = "Marks"
2. Kiểu bảng có thể được xác định bằng cách sử dụng đối số kiểu trong trường hợp này là Lưới bảng

from docx import Document
# create document
doc = Document[]

# add grid table
table = doc.add_table[rows=2, cols=2, style="Table Grid"]

Giờ đây, các hàng và cột của bảng có thể được truy cập bằng cách sử dụng thuộc tính

# access first row's cells
heading_row = table.rows[0].cells

# add headings
heading_row[0].text = "Name"
heading_row[1].text = "Marks"
3 hoặc
# access first row's cells
heading_row = table.rows[0].cells

# add headings
heading_row[0].text = "Name"
heading_row[1].text = "Marks"
4 tương ứng và sau đó chúng ta có thể truy cập từng ô trong hàng đó bằng cách sử dụng
# access first row's cells
heading_row = table.rows[0].cells

# add headings
heading_row[0].text = "Name"
heading_row[1].text = "Marks"
5. Cho phép thêm tiêu đề vào hàng đầu tiên

# access first row's cells
heading_row = table.rows[0].cells

# add headings
heading_row[0].text = "Name"
heading_row[1].text = "Marks"

Theo cách tương tự, chúng tôi có thể thêm thông tin khác vào hàng

________số 8_______

Thêm hàng

Chúng ta cũng có thể thêm các hàng sau khi tạo bảng bằng phương thức add_row để thêm một hàng vào bảng và chúng ta có thể thêm dữ liệu vào hàng đó

# add new row to table
data_row = table.add_row[].cells

# add headings
data_row[0].text = "Bilal"
data_row[1].text = "26"

Nó tạo một bảng có 3 hàng và 2 cột với thông tin

Lề ô

Chúng tôi có thể sử dụng OpenXML để sửa đổi và đặt bất kỳ kiểu nào bằng python-docx. Tại đây, chúng tôi có thể chỉ định lề cho bất kỳ ô nào mà chúng tôi có thể thêm hoặc xóa hoàn toàn lề ô

from docx.oxml.shared import OxmlElement
from docx.oxml.ns import qn

def set_cell_margins[cell, **kwargs]:
    """
    cell:  actual cell instance you want to modify
    usage:
        set_cell_margins[cell, top=50, start=50, bottom=50, end=50]

    provided values are in twentieths of a point [1/1440 of an inch].
    read more here: //officeopenxml.com/WPtableCellMargins.php
    """
    tc = cell._tc
    tcPr = tc.get_or_add_tcPr[]
    tcMar = OxmlElement['w:tcMar']

    for m in ["top", "start", "bottom", "end"]:
        if m in kwargs:
            node = OxmlElement["w:{}".format[m]]
            node.set[qn['w:w'], str[kwargs.get[m]]]
            node.set[qn['w:type'], 'dxa']
            tcMar.append[node]

    tcPr.append[tcMar]

Từ Stackoverflow. https. // stackoverflow. com/a/55177526/6663675

Bây giờ chúng ta có thể thêm lề vào bất kỳ ô nào để tăng dung lượng

# access second row's cells
data_row = table.add_row[].cells

set_cell_margins[data_row[0], top=100, start=100, bottom=100, end=50]

# add headings
data_row[0].text = "Usman"
data_row[1].text = "76"

Bảng lồng nhau

Chúng tôi cũng có thể tạo các bảng lồng nhau nơi chúng tôi có thể thêm bảng vào một ô. Ví dụ 1 người muốn cộng điểm cho nhiều môn. Chúng ta có thể thêm một bảng vào các ô của bảng cha

marks = {"English" : 78, "Physics" : 98, "Chemistry" : 78}

# add new row
data_row = table.add_row[].cells

# name of person
data_row[0].text = "Nasir"
# We add a table to 2nd cell with rows equal to our entries [3]
marks_table = data_row[1].add_table[rows=len[marks], cols=2]

Bây giờ chúng ta có thể lặp lại các giá trị và thêm vào bảng

for i, row in enumerate[marks.items[]]: # iterate over 3 values
    marks_table.rows[i].cells[0].text = row[0] # sub table first cell
    marks_table.rows[i].cells[1].text = str[row[1]] # second cell

Chúng tôi cũng có thể hiển thị hình ảnh bên trong bảng

Hình ảnh bảng

Trong đoạn bảng, chúng ta có thể thêm hình ảnh vào bảng. Đây là một ví dụ đơn giản để thêm hai hình ảnh vào bảng. Ở đây, chúng tôi lấy đoạn văn cho một ô mà chúng tôi muốn hiển thị hình ảnh và sau đó sử dụng phương thức add_picture để thêm hình ảnh từ đường dẫn. và chúng tôi cũng chỉ định chiều cao và chiều rộng tính bằng Inch

from docx.shared import Inches, Cm

doc = Document[] # create doc
doc.add_heading['Images in Table', 0] # add heading

# create table with two rows and columns
table = doc.add_table[rows=2, cols=2, style="Table Grid"]

# add first image with text
table.rows[0].cells[0].text = 'This is image text inside table for 1st image.'

# add image to table
paragraph = table.rows[0].cells[1].paragraphs[0]
run = paragraph.add_run[]
run.add_picture['image-1.jpg', width=Inches[3], height=Inches[1.5]]



table.rows[1].cells[0].text = 'This is image text inside table for 2nd image.'

# add image to table
paragraph = table.rows[1].cells[1].paragraphs[0]
run = paragraph.add_run[]
run.add_picture['image-2.jpg', width=Inches[3], height=Inches[1.5]]

# save to file
doc.save["images-table.docx"]

Vì vậy, nó tạo một bảng có văn bản ở cột thứ nhất và hình ảnh ở cột thứ 2 cho mỗi hàng

Để biết thêm thông tin về cách làm việc với hình ảnh, hãy xem bài đăng tiếp theo của tôi hoặc xem tài liệu về python-docx

Chế độ xem có thể thêm dữ liệu từ tệp csv, tệp văn bản hoặc bất kỳ tệp nào khác vào bảng trong docx. Vì vậy, để biết thêm thông tin, hãy xem tài liệu python docx

Chủ Đề