好友
阅读权限20
听众
最后登录1970-1-1
|
本帖最后由 hs248613 于 2022-5-19 10:10 编辑
写在前面:
因为工作原因要审核一些工地上的计时工单子,简单来说就是核对几个时间段一工花了多少时间
几十、几百张单子手算太麻烦,也没有电子表,就写了个代码把数据导到Excel里计算
代码写完了,能用,发出来希望看到的大佬能在我基础上指点、优化下(代码写好了)
代码实现效果:
把计时工单子里的开始时间、结束时间提取出来到表格里,再利用表格计算时间,这样就可以核对里面的总时间是不是计算对了。
本人小白,刚开始心很大:要把doc转docx、要用循环遍历所有Word文件、用for循环把数据写入表格、写入计算。
后面变成了手动合并文档、手动转docx、for循环架构不起来,数据用笨办法一行代码一行代码的执行,计算手动表格里设置,表格提前建好。
需要提取的数据:
计时工单子示例
执行后获得的数据:
下面是代码和附件,有兴趣的可以自己试试
from docx import Document
from openpyxl import load_workbook
import re
# path = r'C:/Users/HS/Desktop/python_riqi/小挖机.docx'wb = load_workbook(r'./导出数据.xlsx') #读取当前目录下文件,文件名可根据需求更改
ws = wb.active
# 读取文件
document = Document(r'./小挖机.docx') #读取当前目录下文件,文件名可根据需求更改
# 读取word中的所有表格
tables = document.tables
for i in range(0,12):
# 获取第n张表
table0 = tables
date1_0 = table0.cell(0, 3).text
#print(date1_0)
date1 = table0.cell(3, 1).text #获取指定单元格信息
# print(date1)
date1_1 = re.findall(r"上午开始时间:(.*);",date1) #正则获取单元格信息
date1_2 = re.findall(r"上午完成时间:(.*);",date1)
date1_3 = re.findall(r"下午开始时间:(.*);",date1)
date1_4 = re.findall(r"下午完成时间:(.*);",date1)
date1_5 = re.findall(r"晚上开始时间:(.*);",date1)
date1_6 = re.findall(r"晚上完成时间:(.*);",date1)
# print(date1_1)
ws.cell(i*8+2,2).value = date1_0[5:] #将获取到的时间写入表格
ws.cell(i*8+3,2).value = date1_1[0]
ws.cell(i*8+4,2).value = date1_2[0]
ws.cell(i*8+5,2).value = date1_3[0]
ws.cell(i*8+6,2).value = date1_4[0]
ws.cell(i*8+7,2).value = date1_5[0]
ws.cell(i*8+8,2).value = date1_6[0]
i +=1
wb.save('导出数据.xlsx')
print('save…………\n数据读取完毕')
Word表格和Excel文件链接
链接:https://pan.baidu.com/s/1oaraDcc5lrpASLCECYaFEA?pwd=z7lb
提取码:z7lb |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|