python 批量填写word表格
今天因为老爸下乡扶贫工作,要填很多word表格,一张表一张表填写显然太慢了,就简单写了一个python代码去处理。大体上就是使用docx库来批量填写word表格,至于word表格的数据来源是使用xlrd库从excel表格中读取出来的。
要填的word表格就是下面这张表,需要填写的为高亮部分。
人员信息来自excle表格,如下图所示:
每个人填写一张word表格,word表格可能是由于单元格合并的原因,许多cell并不是看上去的位置,如要填写身份证号码的单元格看起来像是第二行第四列的单元格(cell(1,3)),其实是cell(1,6)。总之这个word表格的格式非常的乱七八糟,python操作起来非常困难,试了好久才找到每一个需要填写的元素的位置,还有单元格的paragraphs和runs的数量、内容!!!
import docx
from docx import Document
import xlrd#document对象、姓名、身份证号、电话、户籍所在地(村)、文化程度、正在填写的表格序号
def Wirte2Docx(doc, name, id, phoneNumber, resAddr, cultureLevel, helthLevel, tableNum):#获取word文档中的表格listtables = doc.tables#确定要填写第几张表 modifytable = tables[tableNum]#获取要填写或修改的cell(表格的单元格)nameCellRun = table.cell(1,1).paragraphs[0].runs[0] #run对象可以看做文本和格式的结合体,修改run.text即仅修改文本,保留原有的格式。idCellRun = table.cell(1,6) #没有run对象 乱七八糟的表格格式!!!!烦死phoneCellRun = table.cell(1,20)#经测试发现这个cell有两个run:第一个为省 市 县(市、区) 乡镇(街道) ,第二个为 村(社区)这部分resAddrCellRuns = table.cell(3,1).paragraphs[0].runsprovenancesRun = resAddrCellRuns[0]countryRun = resAddrCellRuns[1]#□、博士研究生、□、硕士研究生、□、大学本科生、□、大专生、□、中专中技、 □、高中、□、初中、 □、小学 、□、其他 每个元素一个runcultureLevelCellRuns = table.cell(5,1).paragraphs[0].runs#□健康或良好 □一般或较弱 □有慢性病 □残疾 每个元素一个run 共八个runhealthLevelRuns = table.cell(7,1).paragraphs[0].runs#使用run在原本的表格样式基础上仅对表格内容进行修改nameCellRun.text = nameidCellRun.text = idphoneCellRun.text = phoneNumberprovenances = "山西省 忻州市(市、区) 原平市(县、区) 段家堡村乡镇(街道) "country = resAddrprovenancesRun.text = provenancescountryRun.text = country#填写文化水平choseFlag="☑"if "博士" in cultureLevel:cultureLevelCellRuns[0].text = choseFlag + "博士研究生"elif "硕士" in cultureLevel:cultureLevelCellRuns[2].text = choseFlag + "硕士研究生"elif "本科" in cultureLevel:cultureLevelCellRuns[4].text = choseFlag + "大学本科生"elif "大专" in cultureLevel:cultureLevelCellRuns[6].text = choseFlag + "大专生"elif "中专" in cultureLevel or "中职" in cultureLevel:cultureLevelCellRuns[8].text = choseFlagelif "高中" in cultureLevel:cultureLevelCellRuns[11].text = choseFlagelif "初中" in cultureLevel:cultureLevelCellRuns[14].text = choseFlagelif "小学" in cultureLevel:cultureLevelCellRuns[17].text = choseFlagelse:cultureLevelCellRuns[20].text = choseFlagprint("第%d个表格的文化水平格式不规范,需要人工填写,%s的文化水平为%s" % (tableNum+1, name, cultureLevel))#填写健康状况choseFlag="☑"if helthLevel == "健康" or helthLevel == "良好":healthLevelRuns[0].text = choseFlag + "健康或良好 □一般或较弱 □有慢性病 □残疾"elif "慢性病" in helthLevel:healthLevelRuns[0].text = "□健康或良好 □一般或较弱 " + choseFlag + "有慢性病 □残疾"elif "残疾" in helthLevel:healthLevelRuns[0].text = "□健康或良好 □一般或较弱 □有慢性病 " + choseFlag + "残疾"else:healthLevelRuns[0].text = "□健康或良好 " + choseFlag + "一般或较弱 □有慢性病 □残疾"print("第%d个表格健康水平需要人工填写,%s的健康水平为%s" % (tableNum+1, name, helthLevel))returnif __name__ == "__main__":#读取xls文件中的数据workShop = xlrd.open_workbook("test1.xls")sheet = workShop.sheet_by_index(0)#打开word文档(表格未填写)doc = Document("test3.docx")for i in range(1077,1097): #青疙瘩村的人员信息位于excel表格的1077-1096行row = sheet.row_values(i) #获取该行的人员信息 放在一个list里Wirte2Docx(doc, row[1], row[2], row[16], "青疙瘩村", row[5], row[7], i-1077)#保存填写后的word文档doc.save("青疙瘩资料.docx")
非常简单而不优美,但是懒得改了能用就行!
python 批量填写word表格相关推荐
- python批量修改word表格实例尝试(python-docx模块)
问题起源:在做施工文件的时候,经常遇到填数的问题,例如如下表格 因为这是word表格,不能用Excel中的随机函数,且表格较多(60几个),手动修改浪费时间.所以选用python来解决该问题. 思路: ...
- python批量提取word指定内容_使用python批量读取word文档并整理关键信息到excel表格的实例...
目标 最近实验室里成立了一个计算机兴趣小组 倡议大家多把自己解决问题的经验记录并分享 就像在CSDN写博客一样 虽然刚刚起步 但考虑到后面此类经验记录的资料会越来越多 所以一开始就要做好模板设计(如下 ...
- 极速系列04—python批量获取word/PDF/网页中的表格
这里写目录标题 1 python批量获取word中的表格 目的: 1.1 简介 1.2 读取word文档内容 方法一 方法二 2 python批量获取PDF中的表格 目的: 2.1 简介 2.2 读取 ...
- 使用 python 填写 word 表格
使用 python 填写 word 表格 用 python 填写 word 表格 安装 Python-docx 包 整个代码 用 python 填写 word 表格 下面的代码段不包含格式处理,仅能改 ...
- python批量生成word报告_Python操作Word批量生成合同的实现示例
背景:大约有3K家商家需要重新确认信息并签订合同.合同是统一的Word版本.每个供应商需要修改合同内的金额部分.人工处理方式需要每个复制粘贴且金额要生成大写金额.基于重复工作可偷懒.用Python解救 ...
- python批量替换word文字
这里写自定义目录标题 python批量替换word文字 代码 Gitee地址 微信赞赏 python批量替换word文字 代码 """本项目特点:1.获取word中数据, ...
- python批量生成word复工证明
python批量生成word复工证明 近期不少企业开始复工,老板也给我安排让给所有员工开复工证明,借助python,轻松实现批量生成员工复工材料. 首先需要一个员工信息表格,如下表: 利用表格信息,批 ...
- Python实现读取Word表格计算汇总写入Excel
Python实现读取Word表格计算汇总写入Excel 快过年了,又到了公司年底评级的时候了.今年的评级和往常一样,每个人都要填写公司的民主评议表,给各个同事进行评价打分,然后部门根据收集上来的评价表 ...
- python自动制作word_办公自动化5_用Python批量生成word版邀请函
-- coding: utf-8 -- """ Created on Sat Jul 11 23:06:30 2020 @author: Administrator &q ...
最新文章
- python中关于sqlite3数据库更新数据的使用
- 让我撸一次HashMap
- 软件项目开发计划书【申明:来源于网络】
- 011_布尔值内建函数
- html线条绕圆旋转,js围绕圆旋转
- 17/100. Maximum Subarray
- 【转】phpize学习
- 前端学习(96):切图流程
- mysql 单标递归_MySql8 WITH RECURSIVE递归查询父子集的方法
- typescript语法高亮插件_vscode常用插件
- 【英语学习】【WOTD】doldrums 释义/词源/示例
- html标签slot,插槽solt和slot-scope
- 变电站接地网的优化设计22437
- 洛谷 P1509 找啊找啊找GF(复习二维费用背包)
- 响应activex事件
- android 登录界面 布局,Android基本布局和登录界面的设计
- 十二种不常见密码及部分实现脚本
- vue前端实现批量导出
- ML/DL学习笔记2——偏差和方差模型好坏
- 查看oracle归档日志内容,查看归档日志内容