在日常工作中,我们经常需要创建和修改 Word 文档,比如生成合同、报告或其他文书。传统的手动操作不仅繁琐且容易出错,尤其是当需要批量处理时。幸运的是,Python 提供了 python-docx 库,让我们可以自动化生成和处理 Word 文档。
今天,我们就一起来学习如何使用 python-docx 批量生成和修改 Word 文档,自动化处理日常文档任务。
1. 什么是 python-docx?
python-docx 是一个 Python 库,专门用于创建、修改和格式化 Word 文档。它支持 DOCX 格式文件(Word 2007 及以后的版本),可以让你通过编程的方式轻松实现对 Word 文档的操作,批量生成合同、报告、发票等。
安装 python-docx
首先,确保你安装了 python-docx。你可以通过以下命令安装:
pip install python-docx
2. 创建 Word 文档
使用 python-docx 最基本的操作之一就是创建一个新的 Word 文档。你可以通过以下代码轻松地创建一个空白文档,并向其中添加内容。
2.1 创建文档并添加文本
from docx import Document
# 创建一个文档对象doc = Document()
# 向文档添加标题doc.add_heading('合同模板', 0)
# 向文档添加正文doc.add_paragraph('本合同由甲方与乙方签订。')
# 保存文档doc.save('contract.docx')
在上面的代码中,首先通过 Document() 创建了一个新的空白文档。然后,使用 add_heading() 方法添加了一个标题,add_paragraph() 添加了正文内容。最后,通过 save() 方法将文档保存为 contract.docx。
3. 修改现有 Word 文档
除了创建新的文档,python-docx 还可以帮助你修改已有的 Word 文档。比如,我们可以打开一个已有的文档,读取其中的内容,并在此基础上进行修改。
3.1 打开和修改文档
from docx import Document
# 打开一个已存在的文档doc = Document('contract.docx')
# 向文档末尾添加一段新的文字doc.add_paragraph('甲方与乙方已达成协议,合同生效。')
# 保存修改后的文档doc.save('contract_updated.docx')
在这个示例中,Document('contract.docx') 用来打开已有的 contract.docx 文档,然后我们使用 add_paragraph() 向文档中添加了一段新的文字。最后,通过 save() 保存修改后的文档为 contract_updated.docx。
4. 格式化 Word 文档
除了简单地插入文本,python-docx 还支持对文本的格式化操作。你可以调整字体、大小、加粗、斜体、颜色等,从而使文档看起来更加专业。
4.1 修改文本格式
from docx import Documentfrom docx.shared import Pt, RGBColor
# 创建一个新的文档doc = Document()
# 添加标题并设置格式heading = doc.add_heading('合同内容', 0)heading.alignment = 1 # 居中
# 添加段落并格式化paragraph = doc.add_paragraph()run = paragraph.add_run('本合同由甲方与乙方签订。')
# 设置字体样式run.font.size = Pt(14) # 设置字体大小run.font.bold = True # 设置加粗run.font.italic = True # 设置斜体run.font.color.rgb = RGBColor(255, 0, 0) # 设置字体颜色为红色
# 保存文档doc.save('formatted_contract.docx')
在这个例子中,我们创建了一个新的文档,并添加了一个居中的标题和一段格式化的文本。通过 run.font.size 设置字体大小,通过 run.font.bold 和 run.font.italic 设置加粗和斜体,最后使用 run.font.color.rgb 设置字体颜色为红色。
5. 批量处理 Word 文档
在实际应用中,我们经常需要批量处理多个 Word 文档,比如批量生成合同、报告,或将数据导出到 Word 格式。通过 python-docx,我们可以自动化这些操作,节省大量时间。
5.1 批量生成多个 Word 文件
假设我们有一份客户信息列表,想要为每个客户生成一份定制化的合同。我们可以通过以下代码批量生成多个 Word 文档:
from docx import Document
# 客户列表customers = [ {'name': '张三', 'contract_id': '001'}, {'name': '李四', 'contract_id': '002'}, {'name': '王五', 'contract_id': '003'}]
# 批量生成合同for customer in customers: # 创建一个新的文档 doc = Document() # 添加标题 doc.add_heading('合同 - ' + customer['name'], 0) # 添加合同内容 doc.add_paragraph(f'合同编号: {customer["contract_id"]}') doc.add_paragraph(f'甲方: {customer["name"]},同意与乙方签订协议。') # 保存为不同的文件doc.save(f"contract_{customer['contract_id']}.docx")
在这个例子中,我们有一个客户列表,每个客户都有自己的名字和合同编号。程序会遍历这个列表,为每个客户生成一份定制化的合同,并根据客户的合同编号保存为不同的文件。
5.2 从数据生成 Word 文档
除了直接写入固定文本,python-docx 还可以根据外部数据生成文档。比如,我们可以从 Excel 文件中读取数据,并将数据填充到 Word 文档中:
import pandas as pdfrom docx import Document
# 读取 Excel 文件中的客户信息df = pd.read_excel('customers.xlsx')
# 批量生成合同for index, row in df.iterrows(): doc = Document() doc.add_heading('合同 - ' + row['Name'], 0) doc.add_paragraph(f'合同编号: {row["ContractID"]}') doc.add_paragraph(f'甲方: {row["Name"]},同意与乙方签订协议。')doc.save(f"contract_{row['ContractID']}.docx")
在这里,我们通过 pandas 库读取 Excel 文件中的客户信息,然后根据每个客户的信息生成 Word 合同。这种方式对于需要从数据库或外部文件导入数据并生成文档的场景非常实用。
6. 实际应用场景
通过 python-docx,我们可以自动化多种文档生成任务,尤其在以下场景中非常有用:
批量生成合同:为每个客户自动生成个性化的合同,并自动保存为不同的文件。
生成报告:根据数据自动生成报告,格式化表格和文本内容。
数据导出:将财务、销售等数据从 Excel 或数据库导出到 Word 格式,以便打印或存档。
通过自动化这些任务,我们可以大大提高工作效率,减少重复性劳动。
7. 小贴士和注意事项
格式化文本:在格式化文本时,记得使用 run 对象进行操作,确保文本的格式能够正确应用。
段落样式:你可以使用 add_paragraph() 方法自定义段落的样式,并在段落中添加多个 run,进行更细致的控制。
表格操作:python-docx 还支持向文档中添加表格,操作起来与普通文本类似。
通过 python-docx,我们可以轻松地创建、修改和格式化 Word 文档,批量处理合同、报告等任务。无论是从数据库导出数据生成文档,还是根据模板生成个性化合同,python-docx 都是一个非常强大的工具。
小伙伴们,今天的Python学习之旅就到这里啦!记得动手敲代码复习实操,有问题随时在评论区问毛毛哦。祝大家学习愉快,快速上手Python学习!
关注点赞,好运不断;
(・ω< )
领取专属 10元无门槛券
私享最新 技术干货