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拷贝进来,点击执行
    在这里插入图片描述

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

  • 38
    点赞
  • 219
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 可以使用Python中的openpyxl和python-docx库来实现将Excel数据写入Word的功能。 具体步骤如下: 1. 使用openpyxl库读取Excel文件中的数据。 2. 使用python-docx库创建一个新的Word文档。 3. 将Excel数据逐行写入Word文档中。 4. 保存Word文档。 代码示例: ```python import openpyxl from docx import Document # 打开Excel文件 wb = openpyxl.load_workbook('data.xlsx') sheet = wb.active # 创建一个新的Word文档 doc = Document() # 将Excel数据逐行写入Word文档中 for row in sheet.iter_rows(min_row=2): # 获取Excel数据 name = row[0].value age = row[1].value gender = row[2].value # 将数据写入Word文档中 doc.add_paragraph(f'姓名:{name}') doc.add_paragraph(f'年龄:{age}') doc.add_paragraph(f'性别:{gender}') doc.add_page_break() # 保存Word文档 doc.save('data.docx') ``` 注意:在使用openpyxl库读取Excel文件时,需要安装openpyxl库。在使用python-docx库创建Word文档时,需要安装python-docx库。 ### 回答2: Python是一种功能强大且广泛使用的编程语言,可以轻松地将数据从电子表格文件中提取并将其写入Word文档中。Python中包含了很多可用的库,例如openpyxl和python-docx,使用这些库可以非常方便地完成这个任务。 首先,我们需要安装这两个库。openpyxl库可以帮助我们访问和编辑Excel文件中的数据,而python-docx库可以用于创建和编辑Word文档。 要使用openpyxl库,我们需要导入它并打开Excel文件。例如,下面的代码打开名为“data.xlsx”的Excel文件,并将第一个工作表中的数据存储在名为“worksheet”的变量中: ```python import openpyxl workbook = openpyxl.load_workbook('data.xlsx') worksheet = workbook.active ``` 接下来,我们需要使用python-docx库创建一个新的Word文档。我们可以使用Document类来实现这一点。下面的代码创建了一个新的Word文档: ```python from docx import Document document = Document() ``` 完成这些准备工作后,我们可以开始将Excel数据添加到Word文档中。我们可以使用table对象来保存要写入Word文档的数据。下面的代码创建一个包含三行和三列的表格,并将Excel数据添加到其中: ```python from docx.shared import Inches table = document.add_table(rows=3, cols=3) for i, row in enumerate(worksheet.iter_rows(values_only=True)): if i == 0: table.cell(i, 0).text = str(row[0]) table.cell(i, 1).text = str(row[1]) table.cell(i, 2).text = str(row[2]) else: row_cells = table.add_row().cells row_cells[0].text = str(row[0]) row_cells[1].text = str(row[1]) row_cells[2].text = str(row[2]) ``` 最后,我们可以将保存有Excel数据Word文档写入磁盘。下面的代码将Word文档保存为“output.docx”: ```python document.save('output.docx') ``` 以上就是使用PythonExcel数据写入Word文档的所有步骤。使用这些代码可以轻松地进行数据格式化和大规模批处理,使得这个任务变得简单、快速、高效。 ### 回答3: Python作为一种高级编程语言,提供了强大的库和工具来管理各种数据文件,包括ExcelWord文档。Python可以轻松读取Excel数据并将其写入Word文档。 首先,需要安装第三方库“openpyxl”和“python-docx”。这两个库都可以在命令行上通过“pip install”命令进行安装。安装完成后,我们可以在Python代码中使用它们。 接下来,我们需要导入这两个库并打开Excel文件。使用“openpyxl.load_workbook”方法可以打开指定的Excel文件。例如,以下代码将打开名为“data.xlsx”的文件: ``` import openpyxl workbook = openpyxl.load_workbook('data.xlsx') ``` 之后,我们需要获取Excel数据,可以使用“workbook.active”属性获取活动工作表,再使用“cell”的“value”属性或“row”的“values”属性获取单元格或一行数据。例如,以下代码获取第一个工作表的A2单元格的值和第二行的所有值: ``` worksheet = workbook.active # 获取A2单元格的值 value = worksheet.cell(row=2, column=1).value # 获取第二行的所有值 values = [cell.value for cell in worksheet['2']] ``` 接下来,我们需要创建一个新的Word文档。使用“Document”类可以创建一个新的文档。例如,以下代码创建了一个新的文档: ``` from docx import Document document = Document() ``` 创建了新文件后,我们可以使用Python代码来向其中添加文本,表格等信息。比如,以下代码向创建的文档中添加一个表格并填充内容: ``` from docx import Document from docx.shared import Inches # 创建一个新文档 document = Document() # 添加一个表格 table = document.add_table(rows=3, cols=3) # 填充表格内容 data = ((1, 2, 3), (4, 5, 6), (7, 8, 9)) for i, row in enumerate(table.rows): for j, cell in enumerate(row.cells): cell.text = str(data[i][j]) # 保存文档 document.save('output.docx') ``` 最后,我们需要将Excel数据写入Word文档中。我们可以使用Python的循环遍历Excel数据并将其写入Word表格中,或将其作为文本写入Word文档中。 综上,PythonExcel数据写入Word可以分为三个步骤:打开Excel文件并获取数据、创建新的Word文档并添加表格或文本、将Excel数据写入Word文档中。Python作为一种高级编程语言,其相对于其他编程语言在数据处理方面具有优势。通过Python处理数据的灵活性和便捷性,减少了编写大量的Excel VBA或Word VBA软件的工作和时间成本,提高了数据处理效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值