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:
Advertisement
Answer
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.