不能使用docx python在word doc中应用表格样式

时间:2015-07-13 16:23:37

标签: python docx

我无法使用python 3.4将自定义表格样式应用于WORD文档。我遵循@scanny的一个很棒的方法:我创建了一个空白的WORD文档,创建了一个自定义表格样式并将其保存为" OR"。我创建了一个新表并将自定义表格样式应用于它。然后我删除了表并将文档保存为" template.docx。然后我按如下方式应用了这个样式:

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

当我运行程序时,它会出错: 文件" C:\ Python34 \ lib \ site-packages \ python_docx-0.8.5-py3.4.egg \ docx \ styles \ styles.py",第57行, getitem     引发KeyError("没有带名称的样式'%s'"%key) KeyError:"没有带名称的样式'标题'"

它没有在代码中指定一行,而是一个名为" styles.py"的文件。我的语法有错吗?

感谢, 杰夫

2 个答案:

答案 0 :(得分:0)

设置table.style = "OR"时需要指定样式对象。

那么,你要做的是table.style = document.styles['OR']

最简洁的方法是在创建表格时指定样式,例如:table = document.add_table(rows=1, cols=3, document.styles['OR'])

答案 1 :(得分:0)

旧线程,仍然是一个问题。问题出在“文档”上。您的template.docx不使用“或”样式,因此未保存在该样式中。相反,请使用通用的空文档,即 generic_document=Document(),然后参考您的样式table.style = generic_document.styles['OR']