Specify border appearance in tables using python-docx

≡放荡痞女 提交于 2019-12-31 04:30:15

问题


I am going through the tutorial and documentation of python-docx.

However, I can't find any reference to how I can specify and manipulate the border appearance of a table created in a Microsoft Word document.

When i use the following code:

from docx import Document
from docx.shared import Inches

document = Document()

################################
################################
################################

table = document.add_table(rows=1, cols=3)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Qty'
hdr_cells[1].text = 'Id'
hdr_cells[2].text = 'Desc'

row_cells = table.add_row().cells
row_cells[0].text = 'Str0'
row_cells[1].text = 'Str1'
row_cells[2].text = 'Str2'

row2_cells = table.add_row().cells
row2_cells[0].text = 'Str00'
row2_cells[1].text = 'Str11'
row2_cells[2].text = 'Str22'

################################
################################
################################

document.save('demo.docx')

The resulting docx file shows the 3x3 table with header. Currently there is no black border (inner or outer) on this table.

How can I specify an upper and lower border around the header, a lower border to wrap around the table, as well as an inner vertical border?

For example:


回答1:


Unfortunately, there is no way to directly manipulate table borders from within python-docx. You basically need to use a style, which specifies these. The style must already exist in Word.

In order to generate a table style to your liking, you need to manually create a new empty document in Word, customize one of the existing table styles there (e.g. Colorful Shading), and add a table using this modified style. Next, you delete this table and save the file (say example.docx) on your disk. This is necessary for the modified style to be saved in the document.

All you have to do then is load the file using python-docx and add a new table, which will reference the (modified) table style:

document = Document('example.docx')
table = document.add_table(rows=1, cols=3)
table.style = 'ColorfulShading'

See also Understanding styles in the documentation for details on how styles in Word work.



来源:https://stackoverflow.com/questions/50685458/specify-border-appearance-in-tables-using-python-docx

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!