Python将Excel数据自动填写到Word

Python将Excel数据自动填写到Word

需求

  1. 需求:批量制作劳动合同表,要从excel表格中将每个人的数据导入到docx劳动合同中,重复量很大,因此可以使用python高效解决
  2. 渲染:为了让模板内容不变动,这里使用了类似jinja2的渲染引擎,使用{{ }}插值表达式把数据插入进去。也可以使用{% %}循环,条件语法等。
  3. 模板
  • 合同docx模板(在需要插值的位置填充 {{}} 表达式)
    合同docx模板
  • 人员数据xlsx模板

人员数据xlsx模板

实现

  1. 模板准备
合同模板.docx
人员数据模板.xlsx
  1. 库的引入
#操作xl表格的库
pip install docxtpl

#操作docx文档的库
pip install openpyxl
  1. 代码:ContractFillTest.py
from docxtpl import DocxTemplate
from openpyxl import load_workbook
import os

def replace(obj):
    if obj is None:
        obj = ''
        return obj


wb = load_workbook("./人员数据模板.xlsx")
ws = wb['Sheet1']
contexts = []
for row in range(2, ws.max_row + 1):
    name = ws["A" + str(row)].value
    profession = ws["B" + str(row)].value
    address = ws["C" + str(row)].value
    address = replace(address)
    sex = ws["D" + str(row)].value
    nation = ws["E" + str(row)].value
    politics_status = ws["F" + str(row)].value
    native_place = ws["G" + str(row)].value
    idcard = ws["H" + str(row)].value
    telphone = ws["I" + str(row)].value
    context = {"name": name, "profession": profession, "address": address, "sex": sex, "nation": nation,
               "politics_status": politics_status, "native_place": native_place, "idcard": idcard, "telphone": telphone}
    contexts.append(context)
contexts

os.mkdir("./所有合同")
for context in contexts:
    print(context)
    tpl = DocxTemplate('./合同模板.docx')
    tpl.render(context)
    tpl.save("./所有合同/{}的劳动合同.docx".format(context["name"]))

3.效果
在这里插入图片描述
在这里插入图片描述

py文件打包成exe程序

  1. 说明:打包成exe文件的好处
  • exe文件对于很多小白来说直接鼠标点击运行即可(不用装python环境)
  1. 下载pyinstaller
# 方式1:cmd命令行
pip install pyinstaller
#方式2:或者采用更新、升级的方法
pip install --upgrade pyinstaller

# 方式3:
# 上面两种都失败的情况,即网络条件不好的情况,只能手动下载PyInstaller-3.6.tar.gz ,之后手动初始化
下载地址:https://pypi.org/project/PyInstaller/#files
# 初始化
将PyInstaller-3.6.tar.gz放到Python安装目录下并解压,
cd ./PyInstaller-3.6
python setup.py install

并按下回车键,会看到代码迅速执行,会进行安装pyinstaller,显示如下状态,
看到“Finished processing dependencies for PyInstaller==3.3.dev0+41c426f6d”,即安装成功:
  1. 使用pyinstaller打包py文件成exe程序
  • 打包步骤
# 创建一个ContractFillTest目录
mkdir ContractFillTest
# 进入目录
cd ContractFillTest
# 将ContractFillTest.py放进去
#打包
pyinstaller -F ContractFillTest.py

# 显示Building EXE from EXE-00.toc completed successfull即为成功
  • pyinstaller更多参数:
    -F, –onefile 打包一个单个文件,如果你的代码都写在一个.py文件的话,可以用这个,如果是多个.py文件就别用
    -D, –onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,我个人比较推荐这样,代码易于维护
    -K, –tk 在部署时包含 TCL/TK
    -a, –ascii 不包含编码.在支持Unicode的python版本上默认包含所有的编码.
    -d, –debug 产生debug版本的可执行文件
    -w,–windowed,–noconsole 使用Windows子系统执行.当程序启动的时候不会打开命令行(只对Windows有效)
    -c,–nowindowed,–console
    使用控制台子系统执行(默认)(只对Windows有效)

  • 打包结构

  • 打包结构1
    在这里插入图片描述

  • 进入dist可以看到ContractFillTest.exe文件(有点大10多M) ,再把合同模板.docx和人员数据模板…xlsx拷贝进来,点击执行
    在这里插入图片描述

  • 执行结果(所有合同目录下)
    在这里插入图片描述
    在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值