2

我正在尝试通过 python 创建一个 .docx 文档,但是我发现这两种方法都缺少我需要的功能之一:

  • 设置表格中特定单元格的背景颜色(为绿色)。
  • 添加分页符。

我尝试过:

  • python-docx:据我所知,我无法设置表格中特定单元格的背景颜色。但是,我可以添加分页符。
  • py2docx:支持单元格着色,但我还没有找到添加分页符的方法。

有没有办法在这些模块中的任何一个中完成这两个功能?如果没有,还有其他吗?

谢谢。

4

1 回答 1

2

Word 文档实际上是压缩的 rar 文件。我保存了一个带有单个分页符的 .docx,然后取消了 .docx 文件。那里有很多 xml 文件,但我找到了包含分页符的文件。在 xml 中,它看起来像:

<w:r>
    <w:br w:type="page"/>
</w:r>

于是我查了一下py2docx的源码,发现它使用的类(Text、InlineText、Block、Table等)都有一个xml属性和一个_get_xml函数。

py2docx 的 Break 类如下所示:

class Break(Text):
    def __init__(self):
        self.xml = """<w:br/>"""

    def _get_xml(self):
        return self.xml

这是我相信的常规换行符。但是我们需要的是分页符。所以我做了一个类似的课程,像这样:

from py2docx.elements.text import Text

class PageBreak(Text):
    def __init__(self):
        self.xml = """<w:r><w:br w:type="page"/></w:r>"""

    def _get_xml(self):
        return self.xml

声明后,我可以像使用任何其他 py2docx 类一样使用它:

doc.append(Block(PageBreak()))

我在一个新的 .docx 中使用了 PageBreak 并将其导出,它按预期工作。老实说,我没有尝试将它粘贴在 py2docx 库允许的所有可能的地方,但我相信它应该可以工作。

于 2015-02-17T21:01:00.440 回答