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:
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