Python实现将Excel内容插入到Word模版中

  • Post category:Python

下面我将为您详细讲解 Python 实现将 Excel 内容插入到 Word 模版中的完整实例教程。

环境准备

在开始之前,您需要提前安装好以下两个工具:

  • Python 3
  • python-docx 库

实现步骤

1. 创建 Word 模版并准备数据源

首先,我们需要准备一个 Word 模版文件,并在其中插入需要自动化动态更新的文本标记。

例如,我们可以在模版中插入一些文本标记,如 {name}{age} 等等,这些标记将在 Python 代码中被替换为对应的数据值。

同时,我们还需要准备好 Excel 数据源,这些数据将被动态地填充到 Word 模版中。

2. 读取 Excel 数据源

接下来,我们需要使用 Python 代码读取 Excel 数据源。这可以通过 pandas 库轻松实现。

import pandas as pd

# 读取 Excel 文件
df = pd.read_excel('data.xlsx')

# 输出一些数据
print(df.head())

3. 替换 Word 中的文本标记

读取完 Excel 数据源后,我们可以开始替换 Word 模版中的文本标记了。

from docx import Document
from docx.shared import Inches

# 打开模版文件
doc = Document('template.docx')

# 定义要替换的文本标记
replace_dict = {
    '{name}': 'Tom',
    '{age}': 18
}

# 遍历并替换文本标记
for paragraph in doc.paragraphs:
    for key in replace_dict:
        if key in paragraph.text:
            paragraph.text = paragraph.text.replace(key, str(replace_dict[key]))

doc.save('output.docx')

4. 动态添加表格到 Word 中

我们还可以将 Excel 数据源中的数据动态地生成表格插入到 Word 中。

# 打开模版文件
doc = Document('template.docx')

# 添加表格
table = doc.add_table(rows=len(df)+1, cols=2)
table.style = 'Table Grid'

# 添加表头
heading_cells = table.rows[0].cells
heading_cells[0].text = 'Name'
heading_cells[1].text = 'Age'

# 添加数据
for i, row in df.iterrows():
    cells = table.rows[i+1].cells
    cells[0].text = str(row['Name'])
    cells[1].text = str(row['Age'])

doc.save('output.docx')

示例说明

以上就是将 Excel 内容插入到 Word 模版中的完整实例教程。下面,我将举两个实际的示例说明它的应用。

示例一:自动生成学生成绩单

比如,我们可以将学生成绩单存储在一个 Excel 数据源中,然后通过 Python 代码将数据源中的信息插入到 Word 模版中,自动生成学生成绩单。

示例二:批量生成合同文本

假设我们需要批量生成一些合同文本。我们可以在 Word 模版中预留一些空白填写区域,然后通过 Python 代码动态替换这些区域的内容,生成不同的合同文本。同时,我们还可以将合同另存为 PDF,方便签署和归档。