今天因为老爸下乡扶贫工作,要填很多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表格相关推荐

  1. python批量修改word表格实例尝试(python-docx模块)

    问题起源:在做施工文件的时候,经常遇到填数的问题,例如如下表格 因为这是word表格,不能用Excel中的随机函数,且表格较多(60几个),手动修改浪费时间.所以选用python来解决该问题. 思路: ...

  2. python批量提取word指定内容_使用python批量读取word文档并整理关键信息到excel表格的实例...

    目标 最近实验室里成立了一个计算机兴趣小组 倡议大家多把自己解决问题的经验记录并分享 就像在CSDN写博客一样 虽然刚刚起步 但考虑到后面此类经验记录的资料会越来越多 所以一开始就要做好模板设计(如下 ...

  3. 极速系列04—python批量获取word/PDF/网页中的表格

    这里写目录标题 1 python批量获取word中的表格 目的: 1.1 简介 1.2 读取word文档内容 方法一 方法二 2 python批量获取PDF中的表格 目的: 2.1 简介 2.2 读取 ...

  4. 使用 python 填写 word 表格

    使用 python 填写 word 表格 用 python 填写 word 表格 安装 Python-docx 包 整个代码 用 python 填写 word 表格 下面的代码段不包含格式处理,仅能改 ...

  5. python批量生成word报告_Python操作Word批量生成合同的实现示例

    背景:大约有3K家商家需要重新确认信息并签订合同.合同是统一的Word版本.每个供应商需要修改合同内的金额部分.人工处理方式需要每个复制粘贴且金额要生成大写金额.基于重复工作可偷懒.用Python解救 ...

  6. python批量替换word文字

    这里写自定义目录标题 python批量替换word文字 代码 Gitee地址 微信赞赏 python批量替换word文字 代码 """本项目特点:1.获取word中数据, ...

  7. python批量生成word复工证明

    python批量生成word复工证明 近期不少企业开始复工,老板也给我安排让给所有员工开复工证明,借助python,轻松实现批量生成员工复工材料. 首先需要一个员工信息表格,如下表: 利用表格信息,批 ...

  8. Python实现读取Word表格计算汇总写入Excel

    Python实现读取Word表格计算汇总写入Excel 快过年了,又到了公司年底评级的时候了.今年的评级和往常一样,每个人都要填写公司的民主评议表,给各个同事进行评价打分,然后部门根据收集上来的评价表 ...

  9. python自动制作word_办公自动化5_用Python批量生成word版邀请函

    -- coding: utf-8 -- """ Created on Sat Jul 11 23:06:30 2020 @author: Administrator &q ...

最新文章

  1. python中关于sqlite3数据库更新数据的使用
  2. 让我撸一次HashMap
  3. 软件项目开发计划书【申明:来源于网络】
  4. 011_布尔值内建函数
  5. html线条绕圆旋转,js围绕圆旋转
  6. 17/100. Maximum Subarray
  7. 【转】phpize学习
  8. 前端学习(96):切图流程
  9. mysql 单标递归_MySql8 WITH RECURSIVE递归查询父子集的方法
  10. typescript语法高亮插件_vscode常用插件
  11. 【英语学习】【WOTD】doldrums 释义/词源/示例
  12. html标签slot,插槽solt和slot-scope
  13. 变电站接地网的优化设计22437
  14. 洛谷 P1509 找啊找啊找GF(复习二维费用背包)
  15. 响应activex事件
  16. android 登录界面 布局,Android基本布局和登录界面的设计
  17. 十二种不常见密码及部分实现脚本
  18. vue前端实现批量导出
  19. ML/DL学习笔记2——偏差和方差模型好坏
  20. 查看oracle归档日志内容,查看归档日志内容

热门文章

  1. js实现DOM生成图片
  2. SM9学习笔记与图解——第1章 整体结构
  3. 【知识小记】Word转化为高清PDF
  4. dw8 html视频教程,DW8在网页中轻松插入Flash视频
  5. md文件撰写使用格式
  6. 信息学奥赛一本通:1179:奖学金
  7. 和我一起搭建私有物联网云平台
  8. 中软国际携手华为发力IT外包业务nbsp;…
  9. ChaosBlade混沌工程工具
  10. 实习笔记:空间分析+地形分析+水文分析