Python自动化之批量生成含指定数据的word文档

  

下面是Python自动化之批量生成含指定数据的word文档的完整攻略。

目录

  • 准备工作
  • 安装所需库
  • 创建word文档模板
  • 读取并替换指定数据
  • 批量生成含指定数据的word文档
  • 示例说明
  • 总结

准备工作

在进行自动化生成含指定数据的word文档前,需要准备工作如下:

  • 确定生成的文档的结构、样式和格式,以便后续创建文档模板时使用。
  • 确定要替换的指定数据,并将这些数据存储在某个可访问的位置。

安装所需库

在使用Python进行自动化生成含指定数据的word文档时,需要使用以下库:

  • python-docx:用于创建和操作word文档。
  • pandas:用于导入和处理数据。

在命令行中使用以下命令安装所需库:

pip install python-docx pandas

创建word文档模板

在使用Python进行自动化生成含指定数据的word文档时,需要先创建一个word文档模板,以便后续替换指定数据时使用。创建的文档模板需要包括要替换的所有数据和要使用的样式。

在使用Microsoft Word创建文档模板时,需要注意以下几点:

  • 所有要替换的数据都需要使用特定的标记来标识。
  • 所有要使用的样式都需要在文档中预定义,以便后续替换数据时可以直接使用相应的样式。

读取并替换指定数据

在创建好文档模板后,需要使用Python读取文档模板,并将其中要替换的指定数据替换成实际数据。具体步骤如下:

  1. 导入使用的库。
from docx import Document
from pandas import read_excel
  1. 读取文档模板。
document = Document('文档模板.docx')
  1. 读取要替换的指定数据。
data = read_excel('指定数据.xlsx')
  1. 循环遍历文档中的所有段落和表格,并替换其中的指定数据。
for paragraph in document.paragraphs:
    for placeholder, value in data.items():
        if placeholder in paragraph.text:
            inline = paragraph.runs
            for i in range(len(inline)):
                if placeholder in inline[i].text:
                    text = inline[i].text.replace(placeholder, str(value))
                    inline[i].text = text
    paragraph.style = document.styles['Normal']

for table in document.tables:
    for row in table.rows:
        for cell in row.cells:
            for placeholder, value in data.items():
                if placeholder in cell.text:
                    cell.text = cell.text.replace(placeholder, str(value))
            cell.paragraphs[0].style = document.styles['Normal']

批量生成含指定数据的word文档

在替换好所有指定数据后,使用Python可以批量生成含指定数据的word文档。具体步骤如下:

  1. 定义导出文档的名称和路径。
export_folder = '导出文档的路径'
  1. 循环遍历要生成的所有文档,将替换好数据的文档导出为.docx文件。
for i, row in data.iterrows():
    document_name = row['document_name']
    document_path = export_folder + document_name + '.docx'
    document.save(document_path)

示例说明

下面列举两个示例,分别说明如何自动化地生成公司员工简历和学生毕业证书。

示例1:生成公司员工简历

假设公司一共有10名员工,现在需要为每个员工生成一份含指定数据的简历。简历中需要包括员工的个人信息、工作经历和教育经历。

  1. 创建个人信息、工作经历和教育经历的模板段落和样式,并保存为.docx文件。

  2. 准备员工的个人信息、工作经历和教育经历数据,并保存在指定文件夹中。

  3. 使用Python读取模板文件和数据文件,依次替换模板中的指定数据。

document = Document('员工简历模板.docx')
data = read_excel('员工信息.xlsx', sheet_name='Sheet1', index_col=0)
for paragraph in document.paragraphs:
    for placeholder, value in data.items():
        if placeholder in paragraph.text:
            inline = paragraph.runs
            for i in range(len(inline)):
                if placeholder in inline[i].text:
                    text = inline[i].text.replace(placeholder, str(value))
                    inline[i].text = text
    paragraph.style = document.styles['Normal']

for table in document.tables:
    for row in table.rows:
        for cell in row.cells:
            for placeholder, value in data.items():
                if placeholder in cell.text:
                    cell.text = cell.text.replace(placeholder, str(value))
            cell.paragraphs[0].style = document.styles['Normal']
  1. 使用Python批量生成员工简历,并保存到指定文件夹中。
export_folder = '员工简历'
for i, row in data.iterrows():
    document_name = row['姓名']
    document_path = export_folder + document_name + '.docx'
    document.save(document_path)

示例2:生成学生毕业证书

假设一所学校共有1000名学生,现在需要为每名学生生成一份含指定数据的毕业证书。证书中需要包括学生的个人信息、学习记录和证书编号。

  1. 创建个人信息、学习记录和证书编号的模板段落和样式,并保存为.docx文件。

  2. 准备学生的个人信息、学习记录和证书编号数据,并保存在指定文件夹中。

  3. 使用Python读取模板文件和数据文件,依次替换模板中的指定数据。

document = Document('毕业证书模板.docx')
data = read_excel('毕业证书数据.xlsx', sheet_name='Sheet1', index_col=0)
for paragraph in document.paragraphs:
    for placeholder, value in data.items():
        if placeholder in paragraph.text:
            inline = paragraph.runs
            for i in range(len(inline)):
                if placeholder in inline[i].text:
                    text = inline[i].text.replace(placeholder, str(value))
                    inline[i].text = text
    paragraph.style = document.styles['Normal']

for table in document.tables:
    for row in table.rows:
        for cell in row.cells:
            for placeholder, value in data.items():
                if placeholder in cell.text:
                    cell.text = cell.text.replace(placeholder, str(value))
            cell.paragraphs[0].style = document.styles['Normal']
  1. 使用Python批量生成学生毕业证书,并保存到指定文件夹中。
export_folder = '学生毕业证书'
for i, row in data.iterrows():
    document_name = row['姓名']
    document_path = export_folder + document_name + '.docx'
    document.save(document_path)

总结

Python自动化之批量生成含指定数据的word文档是一项非常有用的任务,可以帮助我们在短时间内生成大量的文档,减少了手动重复处理数据的时间和工作量。虽然在实现过程中需要进行一些准备工作和代码编写,但是可以通过合理的设计和规划,让这项任务变得更加轻松和高效。

相关文章