【问题标题】:python-docx: Using "list Bullet" in newly created .docxpython-docx:在新创建的 .docx 中使用“list Bullet”
【发布时间】:2022-08-07 05:42:35
【问题描述】:

我有一个程序可以从 excel 文件中读取数据,经过一些处理后会创建一个新的 word 文档并将该数据写入其中。

在文档的开头需要有一些带有项目符号的段落,但是在使用时

import docx
Bullet1 = \"This text is for Bullet 1.\"
doc.add_paragraph(Bullet1, style=\'List Bullet\')

我得到错误

KeyError:\"没有样式名称\'List Bullet\'\"

我查看了哪些样式可用,发现只有四种。所以我做了一些阅读并发现,该样式需要在文档中至少使用一次,才能访问它。如果我理解正确,这意味着我必须手动创建一个文档,在其中使用项目符号点,再次删除它们,然后样式“列表项目符号”应该可用。

然而,目标是生成一个新文档并用数据填充它的整个过程应该是全自动的,因此手动创建一个 word 文档,使用项目符号然后再次删除内容,不是一种选择。

我该如何处理这个问题?

    标签: python python-docx


    【解决方案1】:
    import docx
    doc = docx.Document()
    Bullet1 = "This text is for Bullet 1."
    doc.add_paragraph(Bullet1, style='List Bullet')
    doc.save("test.docx")
    

    对我来说(使用 docx 0.8.11)这可以按预期工作并且不会引发错误。

    【讨论】:

    • 很奇怪。我认为我们有相同的版本:我用 python-docx 0.8.11 运行 python3 这是否与我以前从未使用过 docx 因此也没有样式的事实有关?
    • 不知道。我在 macOS 上工作并安装了 Office。对于 doc.styles 中的样式: print(style) 返回 a.o. _ParagraphStyle('列表项目符号')
    【解决方案2】:

    对我来说它也有效

    但我不想要内联样式 像这样:

    doc.add_paragraph(Bullet1, style='List Bullet')
    

    我想要这样:

    x = doc.add_paragraph(wanted_result)
    st =  x.style
    st.name = "list bullet"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-25
      相关资源
      最近更新 更多