为什么在使用python-docx时无法使用MS-Word内置样式?

时间:2018-10-13 11:35:47

标签: python python-3.x python-docx

我想使用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.templateDocument对象。问题是无论我使用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)

为什么样式这么少?
我想知道如何正确应用这种内置样式。
谢谢!

1 个答案:

答案 0 :(得分:1)

请参阅document中的说明。

总而言之,如果您通过python-docx创建新文档,则其样式将受到限制。使用Microsoft Word打开文档,并仅使用适合您需求的可用样式。

或者,使用Microsoft Word创建一个空文档。自定义并选择所需的样式。使用python-docx使用您选择的样式。