word文档批量转换成excel,python批量处理word文档
本文主要介绍Python办公自动化Word到Excel文件的批处理实例的详细讲解。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。
00-1010前言:首先用Python将Word文件导入到行和单元格解析所需内容的内部解析循环中。
目录
大家好。今天一个公务员的小伙伴委托我帮他一个忙。大概有这么一句话(因涉及文档隐私,文中具体内容有所修改)
有将近2,600个格式相似的表格列,每个列都包含以下信息:
日期的签发单位的文号标题的签收栏需要提取这三个粗体内容,存储在一个Excel表中。表格样式如下:
即需要将接收时间、文件标题、文件编号填写到指定位置,同时需要将时间修改为标准格式。如果完全是手动复制修改时间,按照一个条目10s的时间,一分钟可以完成六个条目,那么最早也是有必要的:
而且这种有规则格式的文件排列非常适合Python。好的,那么接下来请让Python出来,我会把代码中必要的信息作为注释呈现出来。
前言
#导入所需的库docx
fromdocximportDocument
#指定存储文件的路径。
path=rC:\Users\word.docx
#读取文件
文档=文档(路径)
#阅读word中的所有表格
表格=document.tables
然后把问题一个个分出来。首先,尝试获取第一个表中第一个文件条目的三个必需信息。
#得到第一张桌子
table0=表[0]
仔细观察发现,一个文件条目占用3行,所以循环迭代表的所有行时,步长可以设置为3。
首先使用Python将Word文件导入
注意表格,按照行和单元格清晰解析所需内容。
#在世界上放一个变量来计数并填入序号
n=0
foriinrange(0,len(table0.rows) 1,3):
#日期
date=table0.cell(i,1)。文本
#标题
title=table0.cell(i 1,1).text.strip()
#符号编号
dfn=tables[j]。cell(i,3).text.strip()
打印(日期,时间,日期)
接下来需要解决的是,我们得到的时间是2/1天/月的形式。我们需要转换成YYYY-MM-DD格式,这就利用了strptime和strptime函数对datetime包:
Strptime:解析字符串中包含的时间
Strftime:被转换成所需的时间格式。
导入日期时间
n=0
foriinrange(0,len(table0.rows) 1,3):
#日期
date=table0.cell(i,1)。文本
#部分词条有空时,在此不做过多评判。
如果“/”日期为:
date=datetime . datetime . strptime(date, %d/%m )。strftime(2020-%m-%d )
else:
日期=-
#标题
title=table0.cell(i 1,1).text.strip()
#符号编号
无引线
= tables[j].cell(i, 3).text.strip()
print(n, date, tite, dfn)
这样一张表的内容解析就完成了,注意这里用的是table[0]即第一张表,遍历所有的表加一个嵌套循环就可以,另外也可以捕获异常增加程序灵活性
n = 0for 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(rC:\Users\20200420.xlsx)
运行时间在10分钟左右,大概离开了一会程序就执行结束了
最后附上完整代码,代码很简单,理清思路最重要
from docx import Documentimport datetime
from openpyxl import Workbook
wb = Workbook()
sheet = wb.active
header = [序号, 收文时间, 办文编号, 文件标题, 文号, 备注]
sheet.append(header)
path = rC:\Users\word.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(rC:\Users\20200420.xlsx)
以上就是Python办公自动化Word转Excel文件批量处理的详细内容,更多关于Python办公自动化Word转Excel的资料请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。