如何用Python创建docx文件

3 投票
2 回答
20487 浏览
提问于 2025-04-18 09:01

我想把我的数据放到微软Word或者LibreOffice Writer的表格里。

我需要能够改变表格中单元格的背景颜色,还需要能把页面设置成“横向”模式。

我一直在找一个简单的库(因为我刚开始学习编程),但没有找到适合我需求的。

你有没有听说过什么可以帮我的?如果有使用示例,那就更容易让我学习了。

2 个回答

3

之前的回答很好,但还有另一种方法:先在Word里创建文档,然后用Python修改xml文件,把你想要的内容插进去。我已经这样做过好几次了。实际上,我现在的发票程序就是这么工作的。

缺点:条件格式和编号列表需要一些真正的xml知识。

优点:没有限制,也不需要管理复杂的样式定义。所有功能都支持,因为一切都是在Word里完成的。

下面是具体的操作步骤:

  1. 创建一个*.docx文档,在你想要的标题、表格单元格等地方放置标记文本。
  2. 使用lxml找到这些标记,并复制它们的父元素(连同它们的格式)。
  3. 利用找到的元素创建模板。
  4. 把你的数据插入这些模板,然后像拼图一样把整个东西组装起来。
  5. 把你的xml打包成一个新的*.docx文件。

我有一个简单的示例项目展示这个过程。Docx2Python可以为你完成大部分工作。

https://github.com/ShayHill/replace_docx_tables

4

你可以看看 这个项目

还有 这里有一个很棒的快速入门指南

使用起来其实挺简单的,我没有测试过这个,但应该是可以的:

from docx import Document

document = Document()
r = 2 # Number of rows you want
c = 2 # Number of collumns you want
table = document.add_table(rows=r, cols=c)
table.style = 'LightShading-Accent1' # set your style, look at the help documentation for more help
for y in range(r):
    for x in range(c):
        cell.text = 'text goes here'
document.save('demo.docx') # Save document

我觉得你不能通过这个库来设置页面的方向属性,不过你可以自己先创建一个横向的空白Word文档,保存在你的工作目录里,然后每次生成文档的时候都复制这个文件。

撰写回答