使用Python实现excel项目清单自动生成word文档
使用PYTHON实现excel项目清单自动生成word文档
- 项目简介
- 软件环境
- 代码
- 操作说明
项目简介
最近在公司学了一点Python,想利用编程把部分工作自动化完成,减轻工作压力。正好最近工作是制作投标文件,需要将数量较多的一些项目信息填入固定格式的投标文件word文档内。我就考虑通过Python实现自动读取excel里各项目信息,按照word模板文件自动生成对应项目名称的word文档,并在每个文档的指定位置自动填入excel里对应项目的信息。
软件功能比较简单。概况起来就是:1.依次读取excel表格里的项目名称,编号、人名、等信息;2.根据word模板文件,依次生成以项目名称为文件名的word文档,并在该文档指定位置插入对应项目的编号、人名、图片等信息
ython
软件环境
Pycharm2021 、 Python3.7 (原来安装的是Python3.10,但是最后编译程序的时候报错,换成Python3.7就好了)、pip(版本不限)
代码
直接上代码
需要引入的包,docx、docxtpl、openpyxl
python-docx:可用于创建和编辑Microsoft Word(.docx)文件。官方文档:link
具体使用方法看官方文档就好,挺不错的,必须注意的是,python-docx包是不能处理doc文件的,只能处理docx文件
docxtp:一个很强大的包,其主要通过对docx文档模板加载,从而对其进行修改。官方文档:link
openpyxl: 一个用于读/写Excel 2010 xlsx/xlsm文件的Python库,官方文档:link
// 需要引入的包,docx、docxtpl、openpyxlfrom docx import Document
from docx.shared import Inches
from docxtpl import DocxTemplate, InlineImage
from openpyxl import load_workbook
import osprint('********************投标文件自动填充工具V0.1********************')
print(' ********************说明********************')
print('根据模板文件(tb.docx)和投标项目清单文件(投标项目清单.xlsx)自动填充投标文件中的相关信息,批量生成投标文件')
print('将招标文件内的投标模板拷贝到tb.docx文件里,在需要填入招标编号、分标编号、投标人等信息的地方键入形如:{{招标编号}}的文字')
print('如:分标编号:后面填入{{分标编号}},程序就可以自动识别出标签所在位置并予以替换。')
print('操作时只需在(投标项目清单.xlsx)文件里修改相应项目的招标编号、分标编号、投标人、法人、地址等信息后,双击main.exe即可。')
print('程序在本目录下生成投标文件文件夹,投标项目清单内的项目会被读取并依次生成对应名称的投标文档')
print('软件作者:bigblueman 联系方式3386026295@qq.com')def replace(obj):if obj is None:obj = ''return obj# 加载要填入的数据
wb = load_workbook(r".\\投标项目清单.xlsx") # 需要填入Word的Excel工作簿的地址
ws = wb['采购需求一览表'] # 工作簿中表格的名称
contexts = []
for row in range(2, ws.max_row + 1):name = ws["H" + str(row)].value # 字母代表表格中对应的列,顺序和列名一定要对应上fbbh = ws["D" + str(row)].valuefbmc = ws["E" + str(row)].valuezbbh = ws["B" + str(row)].valuetbr = ws["U" + str(row)].valuefr = ws["V" + str(row)].valueaddr = ws["W" + str(row)].valuelxr = ws["X" + str(row)].valuelxfs = ws["Y" + str(row)].valuerq = ws["Z" + str(row)].valuexmjl = ws["AA" + str(row)].valuecontext = {"招标项目标段名称": name, "分标编号": fbbh, "投标人": tbr, "分标名称": fbmc, "招标编号": zbbh,"法定代表人":fr,"地址":addr,"联系人":lxr,"联系方式":lxfs,"日期":rq,"项目经理":xmjl} # 变量名称与Word文档中的占位符要一一对应contexts.append(context)
contexts# 创建要保存的文件夹
os.mkdir("./投标文件")
num = 0 # 在文件名称前加入序号,保证生成的文档顺序与Excel中的顺序保持一致,方便查找
for context in contexts:#print(context["name"])#print(context)print ('\r' + " 完成%d个文件" %num ,end='',)# a=os.system('clear')if context["招标项目标段名称"] == None:brek#if context["name"] != none:num = num + 1#tpl = DocxTemplate(r"C:\\Users\\J2662\\PycharmProjects\\根据excel生成word\\tb.docx") # 需要填入的Word文档的的地址tpl = DocxTemplate(r".\\tb.docx") # 需要填入的Word文档的的地址tpl.render(context)tpl.save("./投标文件/%d{}.docx".format(context["招标项目标段名称"]) % num)#插入对应法人的身份证照片if context["法定代表人"] == 'AAA':file = "./投标文件/%d{}.docx".format(context["招标项目标段名称"]) % numdocument2 = Document(file)images = "sfz.jpg"# 在第一个表格的指定的单元格(第一行第一列)插入图片#run = document2.tables[0].cell(0, 0).paragraphs[0].add_run()#run.add_picture('sfz.jpg') #插入图片#run = document2.tables[0].cell(0, 1).paragraphs[0].add_run()#run.add_picture(images,width=Inches(2)) #插入指定宽度的图片#run = document2.tables[0].cell(1, 0).paragraphs[0].add_run()#run.add_picture('sfz.jpg'width = Inches (1.25))document2.save("./投标文件/%d{}.docx".format(context["招标项目标段名称"]) % num)
你可以先用pycharm创建一个工程,将代码拷贝进去,再去安装需要的那几个包。安装方法是在file菜单下的settings里,找到Python interpreter,点击右侧列表上方的加号进行添加,在下一个界面里搜索需要的包,点击左下角的 install Package安装。
- Python下载地址:link,找到下载界面,下载3.7版本的。下载界面上有 Windows embeddable package版本的和 Windows installer版本的,选择 Windows installer下载。Python的安装,环境变量的添加请自行掌握。
- Pycharm 下载地址:link,可以下载免费的Community版本,如果有钱也可以用收费的Professional版。
操作说明
新建一个docx文档,将模板文件拷贝进去。我这里是投标文件。需要填写招标编号、分标编号、投标人,法定代表人、地址、联系人等信息,还有在指定位置放置身份证照片、财务状况表等。如果投标项目比较多,手工制作标书需要耗费较长时间。使用程序自动化填写,可以在几分钟之内完成。
我们需要做的是在标书模板内需要插入文字的地方用花括号做标记。插入图片我是通过在需要插入图片的位置放置表格,让程序判断其是文档中的第几个表格来实现的,有没有其他方法我还没有试验。
我们需要在项目文件夹下新建两个文件:
tb.docx
投标项目清单.xlsx
然后就可以运行程序了
生成的文件自动保存在投标文件文件夹内
打开文件看看,投标文件模板里填充的内容都填充完成了
功能调试完成后,打包成EXE文件发布需要用到pyinstaller包。在Pycharm
里的Terminal窗口里执行pyinstaller 进行打包发布。具体操作略~~~~~
使用Python实现excel项目清单自动生成word文档相关推荐
- python新建word文档_使用Python 自动生成 Word 文档的教程
当然要用第三方库啦 :) 使用以下命令安装: pip install python-docx 使用该库的基本步骤为: 1.建立一个文档对象(可自动使用默认模板建立,也可以使用已有文件). 2.设置文档 ...
- python自动生成和读取word_使用Python自动生成Word文档的教程
当然要用第三方库啦 :) 使用以下命令安装: pip install python-docx 使用该库的基本步骤为: 1.建立一个文档对象(可自动使用默认模板建立,也可以使用已有文件). 2.设置文档 ...
- 关于python-docx自动生成word文档的总结
目录 一.结构 二.常用的API介绍 三.实例展示 展示一 展示二 最近接到一个需求--把数据库里的数据做成表格,然后形成一本书,打印出来送给客户.由于系统目前没有自动导出word或者excel类似的 ...
- 使用FreeMarker自动生成Word文档
使用FreeMarker自动生成Word文档 获取文件路径 创建一个word文档,然后再文档中在文档中写标识,对应代码中的map数据 2.将word转为xml后缀文件,再转为.ftl文件 3.保存路径 ...
- Java使用FreeMarker自动生成Word文档(带图片和表单)
Java使用FreeMarker自动生成Word文档(带图片和表单) 1 背景 2 目标效果 3 创建Word模板 3.1 创建模板文档 3.2 转换模板文档 3.3 处理模板文档中的占位符 3.4 ...
- 用 Python 自动生成 Word 文档并在指定位置插入图片
用Python生成Word文档 在指定位置插入图片 首先当然需要第三方库啦(▽) 天才第一步,第三方的库O(∩_∩)O哈哈~ 参照转发的是这位大佬的博客:https://blog.csdn.net/c ...
- python 自动生成word文档,python实现的生成word文档功能示例
python实现的生成word文档功能示例 发布时间:2020-09-23 11:37:44 来源:脚本之家 阅读:108 作者:zhizunyu2009 本文实例讲述了python实现的生成word ...
- python 自动生成word文档_python实现的生成word文档功能示例
本文实例讲述了python实现的生成word文档功能.分享给大家供大家参考,具体如下: 每月1次的测试费用报销,需要做一个文档.干脆花点时间写个程序吧. # -*- coding: utf-8 -*- ...
- php 内容自动生成word文档,php生成word文档的例子
/** * 生成word文档 * * @param string $html 内容部分 * @param string $file 文件名称 * @param string $code 当前文件编码, ...
- kettle使用数据库来生成序列_Python办公自动化:使用python来自动生成word文档
让python做办公自动化,让你闲下来 让python做自动化,让你闲下来 上节对python的excel Python办公自动化系列:自动操作Excel自动化做了介绍.这次介绍如何用python对w ...
最新文章
- day20-----------IO流(传智视频)
- heroes 2 android,英雄出击2游戏下载-英雄出击2Heroes Strike2中文安卓版下载v0.0.5- 游侠下载站...
- 一起学nRF51xx 12 - flash
- bzoj 1069 [SCOI2007]最大土地面积——旋转卡壳
- arcgis api for js共享干货系列之一自写算法实现地图量算工具
- 优先级队列应用-称检测点查询
- pytorch 命令行运行_PyTorch简介与相关安装
- python大文件排序_Python实现大文件排序的方法
- channel c3 disabled, job failed on it will be run on another channel
- MATLAB交通标志识别系统
- kotlin使用遇到的坑。。。
- 2021租房合同样板
- 题解 P4147 【玉蟾宫】
- 硬件设计分享-⑨电感与磁珠
- 手机游戏的分析,设计,思考
- 四.Redis学习:特殊数据类型
- 网信办督促平台整改算法歧视、大数据杀熟:必须保护用户合法权益
- HDU 5730 Shell Necklace
- POJ 3104(二分算法,难难难)
- 网络舆情信息怎么报送的流程