此篇文章主要是给大家介绍了Python办公系统Word转Excel文件批量编辑实例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪。
序言
小伙伴们好,今日有个公务员的小伙伴们授权委托我给他帮帮忙,应该是有一份Word(因为涉及到文档私秘因此原文中具体内容已经做了改动)
一共有近2600条类似格式的表格细栏,每个栏目包括的信息有:
日期
发文单位
文号
标题
签收栏
需要提取其中加粗的这三项内容到Excel表格中存储,表格样式如下:
也就是需要将收文时间、文件标题、文号填到指定位置,同时需要将时间修改为标准格式,如果是完全手动复制和修改时间,依照一个条目10s的时间计算,一分钟可以完成6条,那么最快也需要:
而这类格式规整的文件整理非常适合用Python来执行,好的那么接下来请Python出场,必要的信息我在代码中以注释信息呈现。
首先使用Python将Word文件导入
#导入需要的库docx from docx import Document #指定文件存放的路径 path=r'C:Usersword.docx' #读取文件 document=Document(path) #读取word中的所有表格 tables=document.tables
再把问题逐个划分,首先尝试获取第一张表第一个文件条目的三个所需信息
#获取第一张表
table0=tables[0] row和cell解析所需内容 注意观察表格,按照row和cell把所需内容解析清楚
仔细观察可以发现一个文件条目占据了3行,所以对表格全部行循环迭代时可以设步长为3
#在全局放一个变量用来计数填序号
n=0 for i in range(0,len(table0.rows)+1,3): #日期 date=table0.cell(i,1).text #标题 title=table0.cell(i+1,1).text.strip() #文号 dfn=tables[j].cell(i,3).text.strip() print(n,date,tite,dfn)
接下来需要解决的是,时间我们获取的是2/1这种日/月的形式。我们需要转化成YYYY-MM-DD格式,而这利用到datetime包的strptime和strftime函数:
strptime:解析字符串中蕴含的时间
strftime:转化成所需的时间格式
import datetime n=0 for i in range(0,len(table0.rows)+1,3): #日期 date=table0.cell(i,1).text #有的条目时间是空的,这里不做过多判别 if'/'in date: date=datetime.datetime.strptime(date,'%d/%m').strftime('2020-%m-%d') else: date='-' #标题 title=table0.cell(i+1,1).text.strip() #文号 dfn=tables[j].cell(i,3).text.strip() print(n,date,tite,dfn) 这样一张表的内容解析就完成了,注意这里用的是table[0]即第一张表,遍历所有的表加一个嵌套循环就可以,另外也可以捕获异常增加程序灵活性 n=0 for j in range(len(tables)): for i in range(0,len(tables[j].rows)+1,3): try: #日期 date=tables[j].cell(i,1).text if'/'in date: date=datetime.datetime.strptime(date,'%d/%m').strftime('2020-%m-%d') else: date='-' #标题 title=tables[j].cell(i+1,1).text.strip() #文号 dfn=tables[j].cell(i,3).text.strip() n+=1 print(n,date,title,dfn) except Exception as error: #捕获异常,也可以用log写到日志里方便查看和管理 print(error) continue 信息解析和获取完成就可以导出了,用到的包是openpyxl from openpyxl import Workbook #实例化 wb=Workbook() #获取当前sheet sheet=wb.active #设立表头 header=['序号','收文时间','办文编号','文件标题','文号','备注'] sheet.append(header) 内层解析循环 在最内层解析循环的末尾加上如下代码即可 row=[n,date,'',title,dfn,''] sheet.append(row) 线程的最后记得保存 wb.save(r'C:Users20200420.xlsx') 运行时间在10分钟左右,大概离开了一会程序就执行结束了 最后附上完整代码,代码很简单,理清思路最重要 from docx import Document import datetime from openpyxl import Workbook wb=Workbook() sheet=wb.active header=['序号','收文时间','办文编号','文件标题','文号','备注'] sheet.append(header) path=r'C:Usersword.docx' document=Document(path) tables=document.tables n=0 for j in range(len(tables)): for i in range(0,len(tables[j].rows)+1,3): try: #日期 date=tables[j].cell(i,1).text if'/'in date: date=datetime.datetime.strptime(date,'%d/%m').strftime('2020-%m-%d') else: date='-' #标题 title=tables[j].cell(i+1,1).text.strip() #文号 dfn=tables[j].cell(i,3).text.strip() n+=1 print(n,date,title,dfn) row=[n,date,'',title,dfn,''] sheet.append(row) except Exception as error: #捕获异常,也可以用log写到日志里方便查看和管理 print(error) continue wb.save(r'C:Users20200420.xlsx')
综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/128704.html
本文主要是给大家介绍了Python办公系统从Excel中测算整理资料并载入Word实例详细说明,感兴趣的小伙伴值得借鉴参考一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪 序言 在前面几个月的文中大家介绍了怎样从Word表格中获取特定数据信息并依据文件格式储存到Excel中,今日我们将要再度以一名阅读者所提出的实际需求来介绍怎么使用Python从Excel中测算、整理资料并载入Wo...
摘要:文章目录隐藏第一迅捷转换器的版本介绍第二迅捷转换器的功能体验第一迅捷转换器的版本介绍老蒋有看到,迅捷转换器的版本有多个版本。而且老蒋有在体验这款迅捷转换软件的时候,速度确实提高不少,那种在线转换的时候速度特别慢。由于工作的需要,我们很多网友朋友可能会希望将PDF文件格式转换成Word、PPT、TXT 或者 Excel等格式。我们一般是用什么软件操作的呢?比如老蒋每次遇到这样的需求,就会找网上...
摘要:总结整个过程的难点在于获取文件对象,从数据中取值然后在按取出,这样我们就可以从后台上传文件,然后进行批量导入数据库,其他数据格式只需要改和中的数据字段就可以 第一篇(从django后台解析excel数据批量导入数据库) 文章会在github中持续更新 作者: knthony github 联系我 1.django 如何从后台上传excel中批量解析数据 要从django后台导入...
此篇文章主要是给大家介绍了Python办公系统批量编辑文档完成实例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早工作上得到晋升。 前言 说起在工作上最让人头大的便是用这样的方法解决一大堆文件夹中文档,这其实并不难,但是却繁。因此当遇到脚踏式的操作过程中一定要注意应用Python来有效懒惰!这次我会以解决微博热搜榜数据信息来实例怎么使用Python批...
摘要:特别注意当用模式载入时,跟都是对象。可以使用载入已经存在的表。我们的目的是从源表中提取信息并批量复制到目标表中,所以我们首先定义一些变量。最后保存目标就可以了。 现代生活中,我们很难不与excel表打交道,excel表有着易学易用的优点,只是当表中数据量很大,我们又需要从其他表册中复制粘贴一些数据(比如身份证号)的时候,我们会越来越倦怠,毕竟我们不是机器,没法长时间做某种重复性的枯燥操...
阅读 873·2023-01-14 11:38
阅读 819·2023-01-14 11:04
阅读 668·2023-01-14 10:48
阅读 1823·2023-01-14 10:34
阅读 873·2023-01-14 10:24
阅读 738·2023-01-14 10:18
阅读 466·2023-01-14 10:09
阅读 500·2023-01-14 10:02