Python 处理 Word 文档:创建、读取与更新的自动化操作

AI 概述
Word 文档是办公场景中最常见的文件格式之一,在 Python 后端开发中常涉及文档的创建、内容提取与批量修改等自动化需求。本文介绍如何使用 Spire.Doc for Python 库,在不依赖 Microsoft Office 环境的情况下,实现对 Word 文档的创建、读取和更新操作。
目录
文章目录隐藏
  1. 一、环境配置
  2. 二、创建 Word 文档
  3. 三、读取 Word 文档
  4. 四、更新与修改 Word 文档
  5. 五、常见操作速查表
  6. 六、注意事项
  7. 结语

Python 处理 Word 文档:创建、读取与更新的自动化操作

不依赖 Office,后端实现 Word 文档的创建、内容提取与批量修改

在日常办公和数据处理流程中,Word 文档是最常见的文件格式之一。无论是生成报告、提取合同信息,还是批量修改文档内容,通过 Python 后端程序自动化处理 Word 文档,都能显著提升工作效率。

本文介绍如何使用 Spire.Doc for Python 库,在 Python 环境中实现 Word 文档的创建、内容读取以及更新修改。该库不依赖 Microsoft Office 环境,可在 Windows、Linux 和 macOS 上运行。

环境说明:本文使用的库为第三方商业组件。免费版本存在一定的功能限制(如段落数量限制、转换时页数限制),生产环境部署前请了解其授权条款。

一、环境配置

1.1 安装库

通过 pip 命令即可完成安装:

pip install Spire.Doc

若需要使用社区免费版,可使用:

pip install Spire.Doc.Free

1.2 导入模块

在 Python 脚本中导入所需模块:

from spire.doc import * from spire.doc.common import *

二、创建 Word 文档

2.1 创建空白文档并添加内容

以下代码演示如何从零创建一个 Word 文档,包含标题、段落和样式:

from spire.doc import *
from spire.doc.common import *

# 创建 Document 对象
doc = Document()

# 添加一个节(Section)
section = doc.AddSection()

# 设置页面边距
section.PageSetup.Margins.All = 40

# 添加标题段落
title_para = section.AddParagraph()
title_para.AppendText("Python 自动化处理 Word 文档指南")

# 添加正文段落
para1 = section.AddParagraph()
para1.AppendText("Spire.Doc for Python 是一个 Word 文档处理库,"
                 "支持创建、读取、修改和转换 Word 文档。")

para2 = section.AddParagraph()
para2.AppendText("该库不依赖 Microsoft Office,可在多种操作系统上运行。")

# 应用内置标题样式
title_para.ApplyStyle(BuiltinStyle.Heading1)

# 保存文档
doc.SaveToFile("output/创建文档.docx", FileFormat.Docx2019)
doc.Close()

2.2 添加图片

# 添加图片段落
picture_para = section.AddParagraph()

# 从本地插入图片
picture = picture_para.AppendPicture("logo.png")

# 调整图片大小
picture.Width = picture.Width * 0.8
picture.Height = picture.Height * 0.8

# 图片居中对齐
picture_para.Format.HorizontalAlignment = HorizontalAlignment.Center

2.3 添加表格

# 添加表格(参数 True 表示自动调整宽度)
table = section.AddTable(True)

# 添加表头行
header_row = table.AddRow(False, 3)
header_row.Cells[0].AddParagraph().AppendText("姓名")
header_row.Cells[1].AddParagraph().AppendText("部门")
header_row.Cells[2].AddParagraph().AppendText("职位")

# 添加数据行
data_row = table.AddRow(False, 3)
data_row.Cells[0].AddParagraph().AppendText("张三")
data_row.Cells[1].AddParagraph().AppendText("技术部")
data_row.Cells[2].AddParagraph().AppendText("工程师")

三、读取 Word 文档

3.1 读取全文文本

from spire.doc import *

# 加载 Word 文档
doc = Document()
doc.LoadFromFile("示例文档.docx")

# 获取全部文本
text = doc.GetText()

# 输出前 500 个字符
print(text[:500])

# 保存为文本文件
with open("output/文档内容.txt", "w", encoding="utf-8") as f:
    f.write(text)

doc.Close()

3.2 读取特定节的文本

doc = Document()
doc.LoadFromFile("示例文档.docx")

# 访问第一个节
section = doc.Sections[0]

# 逐段读取文本
for paragraph in section.Paragraphs:
    print(paragraph.Text)

doc.Close()

3.3 提取表格数据

doc = Document()
doc.LoadFromFile("示例文档.docx")

# 遍历所有表格
for section in doc.Sections:
    for table in section.Tables:
        for row in table.Rows:
            row_data = []
            for cell in row.Cells:
                # 提取单元格文本
                cell_text = ""
                for para in cell.Paragraphs:
                    cell_text += para.Text
                row_data.append(cell_text.strip())
            print("\t".join(row_data))

doc.Close()

3.4 提取批注

doc = Document()
doc.LoadFromFile("示例文档.docx")

# 遍历所有批注
for i, comment in enumerate(doc.Comments):
    print(f"批注 {i+1}:")
    print(f"作者: {comment.Format.Author}")
    
    # 提取批注内容
    content = ""
    for para in comment.Body.Paragraphs:
        content += para.Text
    print(f"内容: {content}\n")

doc.Close()

3.5 获取文档元数据

doc = Document()
doc.LoadFromFile("示例文档.docx")

props = doc.BuiltinDocumentProperties

print(f"标题: {props.Title}")
print(f"作者: {props.Author}")
print(f"主题: {props.Subject}")
print(f"关键词: {props.Keywords}")

doc.Close()

四、更新与修改 Word 文档

4.1 查找替换文本

doc = Document()
doc.LoadFromFile("模板文档.docx")

# 替换所有匹配的文本
doc.Replace("{{姓名}}", "李四", False, True)
doc.Replace("{{日期}}", "2026-05-13", False, True)

doc.SaveToFile("output/替换后文档.docx", FileFormat.Docx)
doc.Close()

4.2 插入文档变量

变量可用于创建可复用的文档模板:

doc = Document()
section = doc.AddSection()
paragraph = section.AddParagraph()

# 插入变量字段
paragraph.AppendField("CompanyName", FieldType.FieldDocVariable)

# 添加变量值
doc.Variables.Add("CompanyName", "示例公司名称")

# 更新字段以显示变量值
doc.IsUpdateFields = True

doc.SaveToFile("output/变量文档.docx", FileFormat.Docx)
doc.Close()

五、常见操作速查表

操作类型 核心方法 说明
创建文档 Document() + AddSection() 从零创建新文档
加载文档 LoadFromFile(路径) 加载现有文档
保存文档 SaveToFile(路径, 格式) 保存为指定格式
添加段落 AddParagraph() 在节中添加段落
添加图片 AppendPicture(路径) 在段落中插入图片
添加表格 AddTable() 在节中添加表格
获取文本 GetText() 提取全文文本
替换文本 Replace(old, new) 查找并替换文本
关闭文档 Close() 释放资源

六、注意事项

1. 资源释放

操作完成后建议调用 Close() 方法释放文档占用的资源。

2. 兼容性

该库支持 Word 97-2003(.doc)、Word 2007 及以上版本(.docx),以及 .docm、.dot、.dotx 等格式。

3. 性能参考

处理常规文档(10 MB 以内)时性能表现平稳。对于超大型文档,建议在异步任务中执行。

4. 授权提醒

该库采用商业授权模式。免费版本存在以下限制(以官方说明为准):

  • 段落数量限制;
  • 表格数量限制;
  • 转换 PDF 时存在页数限制。

若需要在生产环境无限制使用,需了解商业授权方案。

结语

通过 Spire.Doc for Python,开发者可以在不依赖 Microsoft Office 的情况下,实现 Word 文档的创建、读取和修改。本文覆盖了从基础创建到进阶读取的多类场景,包括文本提取、表格解析等实用功能。

在实际项目中,可根据具体需求选择合适的操作方式,并结合业务逻辑设计文档自动化处理流程。建议在使用前测试不同版本 Word 文档的兼容性,并根据文档规模规划合理的处理策略。

以上关于Python 处理 Word 文档:创建、读取与更新的自动化操作的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » Python 处理 Word 文档:创建、读取与更新的自动化操作

发表回复