使用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安装。

  1. Python下载地址:link,找到下载界面,下载3.7版本的。下载界面上有 Windows embeddable package版本的和 Windows installer版本的,选择 Windows installer下载。Python的安装,环境变量的添加请自行掌握。
  2. Pycharm 下载地址:link,可以下载免费的Community版本,如果有钱也可以用收费的Professional版。

操作说明

新建一个docx文档,将模板文件拷贝进去。我这里是投标文件。需要填写招标编号、分标编号、投标人,法定代表人、地址、联系人等信息,还有在指定位置放置身份证照片、财务状况表等。如果投标项目比较多,手工制作标书需要耗费较长时间。使用程序自动化填写,可以在几分钟之内完成。
我们需要做的是在标书模板内需要插入文字的地方用花括号做标记。插入图片我是通过在需要插入图片的位置放置表格,让程序判断其是文档中的第几个表格来实现的,有没有其他方法我还没有试验。

我们需要在项目文件夹下新建两个文件:

tb.docx


投标项目清单.xlsx

然后就可以运行程序了

生成的文件自动保存在投标文件文件夹内

打开文件看看,投标文件模板里填充的内容都填充完成了

功能调试完成后,打包成EXE文件发布需要用到pyinstaller包。在Pycharm
里的Terminal窗口里执行pyinstaller 进行打包发布。具体操作略~~~~~

使用Python实现excel项目清单自动生成word文档相关推荐

  1. python新建word文档_使用Python 自动生成 Word 文档的教程

    当然要用第三方库啦 :) 使用以下命令安装: pip install python-docx 使用该库的基本步骤为: 1.建立一个文档对象(可自动使用默认模板建立,也可以使用已有文件). 2.设置文档 ...

  2. python自动生成和读取word_使用Python自动生成Word文档的教程

    当然要用第三方库啦 :) 使用以下命令安装: pip install python-docx 使用该库的基本步骤为: 1.建立一个文档对象(可自动使用默认模板建立,也可以使用已有文件). 2.设置文档 ...

  3. 关于python-docx自动生成word文档的总结

    目录 一.结构 二.常用的API介绍 三.实例展示 展示一 展示二 最近接到一个需求--把数据库里的数据做成表格,然后形成一本书,打印出来送给客户.由于系统目前没有自动导出word或者excel类似的 ...

  4. 使用FreeMarker自动生成Word文档

    使用FreeMarker自动生成Word文档 获取文件路径 创建一个word文档,然后再文档中在文档中写标识,对应代码中的map数据 2.将word转为xml后缀文件,再转为.ftl文件 3.保存路径 ...

  5. Java使用FreeMarker自动生成Word文档(带图片和表单)

    Java使用FreeMarker自动生成Word文档(带图片和表单) 1 背景 2 目标效果 3 创建Word模板 3.1 创建模板文档 3.2 转换模板文档 3.3 处理模板文档中的占位符 3.4 ...

  6. 用 Python 自动生成 Word 文档并在指定位置插入图片

    用Python生成Word文档 在指定位置插入图片 首先当然需要第三方库啦(▽) 天才第一步,第三方的库O(∩_∩)O哈哈~ 参照转发的是这位大佬的博客:https://blog.csdn.net/c ...

  7. python 自动生成word文档,python实现的生成word文档功能示例

    python实现的生成word文档功能示例 发布时间:2020-09-23 11:37:44 来源:脚本之家 阅读:108 作者:zhizunyu2009 本文实例讲述了python实现的生成word ...

  8. python 自动生成word文档_python实现的生成word文档功能示例

    本文实例讲述了python实现的生成word文档功能.分享给大家供大家参考,具体如下: 每月1次的测试费用报销,需要做一个文档.干脆花点时间写个程序吧. # -*- coding: utf-8 -*- ...

  9. php 内容自动生成word文档,php生成word文档的例子

    /** * 生成word文档 * * @param string $html 内容部分 * @param string $file 文件名称 * @param string $code 当前文件编码, ...

  10. kettle使用数据库来生成序列_Python办公自动化:使用python来自动生成word文档

    让python做办公自动化,让你闲下来 让python做自动化,让你闲下来 上节对python的excel Python办公自动化系列:自动操作Excel自动化做了介绍.这次介绍如何用python对w ...

最新文章

  1. day20-----------IO流(传智视频)
  2. heroes 2 android,英雄出击2游戏下载-英雄出击2Heroes Strike2中文安卓版下载v0.0.5- 游侠下载站...
  3. 一起学nRF51xx 12 -  flash
  4. bzoj 1069 [SCOI2007]最大土地面积——旋转卡壳
  5. arcgis api for js共享干货系列之一自写算法实现地图量算工具
  6. 优先级队列应用-称检测点查询
  7. pytorch 命令行运行_PyTorch简介与相关安装
  8. python大文件排序_Python实现大文件排序的方法
  9. channel c3 disabled, job failed on it will be run on another channel
  10. MATLAB交通标志识别系统
  11. kotlin使用遇到的坑。。。
  12. 2021租房合同样板
  13. 题解 P4147 【玉蟾宫】
  14. 硬件设计分享-⑨电感与磁珠
  15. 手机游戏的分析,设计,思考
  16. 四.Redis学习:特殊数据类型
  17. 网信办督促平台整改算法歧视、大数据杀熟:必须保护用户合法权益
  18. HDU 5730 Shell Necklace
  19. POJ 3104(二分算法,难难难)
  20. 网络舆情信息怎么报送的流程

热门文章

  1. ewiews面板回归模型操作_Eviews常用面板回归模型案例实战
  2. 新手怎样利用博客推广
  3. 【小福利】包邮送40本畅销书籍
  4. 非IE内核浏览器支持Active X控件
  5. Django中render、render_to_response、HttpResponse、JsonResponse、Response的使用
  6. PROE_CONFIG
  7. 设计一个简易的网吧计费系统
  8. android开发学习-日常用到的好东西-常用技巧分享
  9. 数据清洗 Chapter01 | 数据清洗概况
  10. 银行卡,身份证,驾驶证识别