Hướng dẫn python-docx table border - Đường viền bảng python-docx

I'm trying to create a word document using docx module of Python. However I am unable to add table border to it.

My code is as below:

    import docx
    from docx import Document
    from docx.shared import Pt
    doc = Document('C:/Users/Vinny/Desktop/Python/Template.docx')
    doc.add_paragraph('Changes:')

    doc.add_paragraph('Metrics:')
    #add table
    table = doc.add_table(rows = 4, cols = 2, style='TableGrid')
    doc.save('C:/Users/Vinny/Desktop/Python/rel.docx')

But it throws error as:

Traceback (most recent call last):
  File "C:\Users\Vinny\Desktop\Python\abc.py", line 14, in 
    table = doc.add_table(rows = 4, cols = 2, style='TableGrid')
  File "C:\Users\Vinny\AppData\Local\Programs\Python\Python36-32\lib\site-packages\docx\document.py", line 100, in add_table
    table.style = style
  File "C:\Users\Vinny\AppData\Local\Programs\Python\Python36-32\lib\site-packages\docx\table.py", line 134, in style
    style_or_name, WD_STYLE_TYPE.TABLE
  File "C:\Users\Vinny\AppData\Local\Programs\Python\Python36-32\lib\site-packages\docx\parts\document.py", line 76, in get_style_id
    return self.styles.get_style_id(style_or_name, style_type)
  File "C:\Users\Vinny\AppData\Local\Programs\Python\Python36-32\lib\site-packages\docx\styles\styles.py", line 113, in get_style_id
    return self._get_style_id_from_name(style_or_name, style_type)
  File "C:\Users\Vinny\AppData\Local\Programs\Python\Python36-32\lib\site-packages\docx\styles\styles.py", line 143, in _get_style_id_from_name
    return self._get_style_id_from_style(self[style_name], style_type)
  File "C:\Users\Vinny\AppData\Local\Programs\Python\Python36-32\lib\site-packages\docx\styles\styles.py", line 57, in __getitem__
    raise KeyError("no style with name '%s'" % key)
KeyError: "no style with name 'TableGrid'"

Can anyone help me out with this?

Ngày 9 tháng 4 năm 2015, 4:55:31 AM4/9/154/9/15

Ngày 9 tháng 4 năm 2015, 4:55:31 AM4/9/154/10/15Oct 2, 2015 at 19:36

2

Ngày 9 tháng 4 năm 2015, 4:55:31 AM4/9/15

#Open the document
document = Document(args.inputFile)

#changing the page margins
sections = document.sections
for section in sections:
    section.top_margin = Cm(margin)
    section.bottom_margin = Cm(margin)
    section.left_margin = Cm(margin)
    section.right_margin = Cm(margin)

document.save(args.outputFile)

Nhân tiện, tôi gặp lỗi khi thêm kiểu vào bảng. Điều này có được mong đợi không?Oct 2, 2015 at 21:55

Steve CannyXAnguera

Ngày 9 tháng 4 năm 2015, 4:50:22 AM4/9/154/10/151 gold badge11 silver badges23 bronze badges

4

import docx
from docx.shared import Inches, Cm
doc = docx.Document()
sections = doc.sections
for section in sections:
    section.top_margin = Cm(0.5)
    section.bottom_margin = Cm(0.5)
    section.left_margin = Cm(1)
    section.right_margin = Cm(1)

Ngày 9 tháng 4 năm 2015, 4:55:31 AM4/9/154/22/15from docx.shared import Inches, Cm

Tôi cần nhanh chóng thay đổi lề của nhiều tài liệu DOCX. Tôi đã kiểm tra Python-docx và tôi không tìm thấy cách truy cập/sửa đổi bố cục trang (đặc biệt là các bên lề). Là có một cách?Jun 17, 2020 at 13:50

Simon Björk

unread,

Ngày 9 tháng 4 năm 2015, 4:50:22 AM4/9/154/9/154/9/15

đến

Hello,

Tôi có một tài liệu đơn giản trong đó tôi thêm một chút văn bản ở đầu trang và sau đó thêm một bảng. Tất cả điều này hoạt động tuyệt vời, ngoại trừ sự liên kết với lề trang. Tôi muốn văn bản ở trên cùng được căn chỉnh theo chiều dọc với đường viền của bảng. Như bây giờ, văn bản ở trên cùng được căn chỉnh với văn bản trong bảng, nhưng người nội trú thực tế của bảng nằm xa hơn một chút về bên trái. Điều này có thể?

Mã ví dụ:

from docx import Document
from docx.shared import Cm

document

= Document()

document

.add_paragraph().add_run("temp text")

table

= document.add_table(rows=4, cols=4)
table
.style = 'TableGrid'
table
.rows[0].cells[0].paragraphs[0].add_run("more text")

section

= document.sections[0]
section
.left_margin = Cm(1.25)
section
.top_margin = Cm(1.0)

document

.save("tmp.docx")

Simon Björk

unread,

Ngày 9 tháng 4 năm 2015, 4:50:22 AM4/9/154/9/154/9/15

đến

Tôi có một tài liệu đơn giản trong đó tôi thêm một chút văn bản ở đầu trang và sau đó thêm một bảng. Tất cả điều này hoạt động tuyệt vời, ngoại trừ sự liên kết với lề trang. Tôi muốn văn bản ở trên cùng được căn chỉnh theo chiều dọc với đường viền của bảng. Như bây giờ, văn bản ở trên cùng được căn chỉnh với văn bản trong bảng, nhưng người nội trú thực tế của bảng nằm xa hơn một chút về bên trái. Điều này có thể?

/usr/local/lib/python2.7/site-packages/docx/styles/styles.py:54: UserWarning: style lookup by style_id is deprecated. Use style name as key instead.
  warn
(msg, UserWarning)

Mã ví dụ:

unread,

Ngày 9 tháng 4 năm 2015, 4:55:31 AM4/9/154/9/154/9/15

đến

Tôi có một tài liệu đơn giản trong đó tôi thêm một chút văn bản ở đầu trang và sau đó thêm một bảng. Tất cả điều này hoạt động tuyệt vời, ngoại trừ sự liên kết với lề trang. Tôi muốn văn bản ở trên cùng được căn chỉnh theo chiều dọc với đường viền của bảng. Như bây giờ, văn bản ở trên cùng được căn chỉnh với văn bản trong bảng, nhưng người nội trú thực tế của bảng nằm xa hơn một chút về bên trái. Điều này có thể?

--Steve

Simon Björk

unread,

Ngày 9 tháng 4 năm 2015, 4:50:22 AM4/9/154/9/154/9/15

đến

table = document.add_table(rows=4, cols=4)
table
.style = 'TableGrid'

Mã ví dụ:

unread,

Tôi có một tài liệu đơn giản trong đó tôi thêm một chút văn bản ở đầu trang và sau đó thêm một bảng. Tất cả điều này hoạt động tuyệt vời, ngoại trừ sự liên kết với lề trang. Tôi muốn văn bản ở trên cùng được căn chỉnh theo chiều dọc với đường viền của bảng. Như bây giờ, văn bản ở trên cùng được căn chỉnh với văn bản trong bảng, nhưng người nội trú thực tế của bảng nằm xa hơn một chút về bên trái. Điều này có thể?4/10/15

đến

Tôi có một tài liệu đơn giản trong đó tôi thêm một chút văn bản ở đầu trang và sau đó thêm một bảng. Tất cả điều này hoạt động tuyệt vời, ngoại trừ sự liên kết với lề trang. Tôi muốn văn bản ở trên cùng được căn chỉnh theo chiều dọc với đường viền của bảng. Như bây giờ, văn bản ở trên cùng được căn chỉnh với văn bản trong bảng, nhưng người nội trú thực tế của bảng nằm xa hơn một chút về bên trái. Điều này có thể?

Mã ví dụ:

Simon Björk

Ngày 9 tháng 4 năm 2015, 4:50:22 AM4/9/154/9/15

Ngày 9 tháng 4 năm 2015, 4:55:31 AM4/9/154/10/15

--Steve

Simon Björk

unread,

Ngày 9 tháng 4 năm 2015, 4:50:22 AM4/9/154/9/154/10/15

đến

Tôi có một tài liệu đơn giản trong đó tôi thêm một chút văn bản ở đầu trang và sau đó thêm một bảng. Tất cả điều này hoạt động tuyệt vời, ngoại trừ sự liên kết với lề trang. Tôi muốn văn bản ở trên cùng được căn chỉnh theo chiều dọc với đường viền của bảng. Như bây giờ, văn bản ở trên cùng được căn chỉnh với văn bản trong bảng, nhưng người nội trú thực tế của bảng nằm xa hơn một chút về bên trái. Điều này có thể?

Mã ví dụ:

Mã ví dụ:

unread,

Simon Björk4/22/15

đến

Tôi có một tài liệu đơn giản trong đó tôi thêm một chút văn bản ở đầu trang và sau đó thêm một bảng. Tất cả điều này hoạt động tuyệt vời, ngoại trừ sự liên kết với lề trang. Tôi muốn văn bản ở trên cùng được căn chỉnh theo chiều dọc với đường viền của bảng. Như bây giờ, văn bản ở trên cùng được căn chỉnh với văn bản trong bảng, nhưng người nội trú thực tế của bảng nằm xa hơn một chút về bên trái. Điều này có thể?

Mã ví dụ:

--Steve