我想使用python-docx包将样式应用于段落(列表,列表编号,列表编号2 ...等)。我创建了自己的MS-Word模板,该模板具有我制作的某些特定样式。我有时也需要应用MS-Word内置样式。这是我的代码:
elif to_U_sc:
to_write = to_U_sc.group(2)
paragraph = self.template.add_paragraph(to_write, style='List')
elif to_O_sc2:
to_write = to_O_sc2.group(2)
paragraph = self.template.add_paragraph(to_write, style='ListNumber')
此处,self.template
是Document
对象。问题是无论我使用ListNumber
还是List Number
还是wdStyleListNumber
作为样式名称,它们都会引发错误,提示没有这种样式。喜欢:
File "/usr/lib/python2.7/site-packages/python_docx-0.8.5-py2.7.egg/docx/styles/styles.py", line 57, in __getitem__
raise KeyError("no style with name '%s'" % key)
KeyError: u"no style with name 'ListNumber'"
我尝试使用以下代码在模板中打印所有样式:
def all_styles(self):
styles = self._document.styles
for style in styles:
print('Name: {}\tType:{}'.format(style.name, style.type))
这是结果:
名称:列表段落类型:PARAGRAPH(1)
名称:浅色底纹-突出文字颜色22类型:TABLE(3)
名称:浅色重音符号2类型:TABLE(3)
名称:项目类型:PARAGRAPH(1)
名称:大结构类型:PARAGRAPH(1)
名称:标题1字符类型:CHARACTER(2)
名称:网格表2-着色21类型:TABLE(3)
名称:网格表1浅色-着色21类型:TABLE(3)
名称:网格表4-着色51类型:TABLE(3)
名称:网格表4-突出文字颜色11类型:TABLE(3)
名称:列表标题字符类型:CHARACTER(2)
名称:页脚类型:PARAGRAPH(1)
名称:页脚字符类型:CHARACTER(2)
名称:普通(Web)类型:PARAGRAPH(1)
名称:浅色网格-突出文字颜色11类型:TABLE(3)
名称:网格表4-着色41类型:TABLE(3)
名称:网格表4-突出文字颜色41类型:TABLE(3)
名称:网格表4-着色61类型:TABLE(3)
名称:无间距类型:PARAGRAPH(1)
名称:网格表5深色-着色41类型:TABLE(3)
名称:网格表7彩色-着色41类型:TABLE(3)
名称:气球文本类型:PARAGRAPH(1)
名称:批注框文本字符类型:CHARACTER(2)
名称:标题2字符类型:CHARACTER(2)
名称:网格表4-着色5210类型:TABLE(3)
名称:网格表4-着色528类型:TABLE(3)
名称:标头类型:PARAGRAPH(1)
名称:页眉字符类型:CHARACTER(2)
名称:TOC标题类型:PARAGRAPH(1)
名称:toc 1类型:PARAGRAPH(1)
名称:toc 2类型:PARAGRAPH(1)
名称:toc 3类型:PARAGRAPH(1)
名称:超链接类型:CHARACTER(2)
名称:DetailTitle类型:PARAGRAPH(1)
名称:DetailTitle字符类型:CHARACTER(2)
名称:CDGene类型:TABLE(3)
为什么样式这么少?
我想知道如何正确应用这种内置样式。
谢谢!
答案 0 :(得分:1)
请参阅document中的说明。
总而言之,如果您通过python-docx创建新文档,则其样式将受到限制。使用Microsoft Word打开文档,并仅使用适合您需求的可用样式。
或者,使用Microsoft Word创建一个空文档。自定义并选择所需的样式。使用python-docx使用您选择的样式。