I cannot apply a custom table style to a WORD doc using python 3.4. I followed a great method by @scanny: I created a blank WORD doc, created a custom table style and saved it as "OR". I created a new table and applied the custom table style to it. I then deleted the table and saved the doc as "template.docx. I then applied the style as follows:
document = Document("C:/pytest/template.docx")
table = document.add_table(rows=1, cols=3)
table.style = "OR"
hdr_cells = table.rows[0].cells
hdr_cells[0].paragraphs[0].add_run('Date Filmed:').bold = True
hdr_cells[2].paragraphs[0].add_run('Barcode Number:').bold = True
row_cells = table.add_row().cells
row_cells[0].text = date
row_cells[2].text = bcode
When I run the program, it gets an error: File "C:\Python34\lib\site-packages\python_docx-0.8.5-py3.4.egg\docx\styles\styles.py", line 57, in getitem raise KeyError("no style with name '%s'" % key) KeyError: "no style with name 'Title'"
It is not specifying a line in the code, but a file named "styles.py". Do I have the syntax wrong?
thanks, Jeff
Old thread, still a problem. The problem lies in "document". Your template.docx doesn't use the "OR" style and so it's not saved there. Instead, use a generic, empty document i.e.
generic_document=Document()
and then reference that for your styles table.style = generic_document.styles['OR']
.
Your steps were described as:
I created a blank WORD doc, created a custom table style and saved it as "OR". I created a new table and applied the custom table style to it. I then deleted the table and saved the doc as "template.docx.
Can I suggest trying an additional step:
template.docx
.If you don't save the document with the new table that uses the style then the style won't be written to the file.
I have had success using custom table styles using python-docx and this step caught me out.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With