在工作中,每天都有来自各个部门的日报excel数据,需要将日报里面的数据作为原始资料 上传到平台,实现自动化报表。
问题:在上传数据过程中,因为各部门日报数据格式(日期格式)不符合日期格式,是文本格式,导致上传暂停,需要手动检查修改以后,再上传,这样每日都需要重复检查修改,很低效。
解决思路:通过python编程,程序自动将日报表格日期数据自动转换为日期格式,减少人工手动重复修改。
目标:编程没有整体规划思路,就是以“问题”出发去解决。代码实现了自动读取目标路径下的 日报表格,自动转换数据。但是进一步,希望生成一个GUI应用程序,在任何计算机电脑上,没有编译平台的情况下,实现数据转换。
编程实现问题:数据转换的代码已经完成,程序运行思路是:1. 代码中写好目标文件的文件地址2.循环读取文件地址,并打开文件内容,进行数据转换后保存。
所以下一步,如何将代码在创建的“按钮”里面实现,需要什么函数?如何实现,通过按键 选中目标文件地址,将地址保存到已完成代码中的 地址变量,将两部分程序结合,实现最终的 可视化应用程序。
import pandas as pd
from datetime import datetime
import numpy as np
import openpyxl
import os
# 指定要遍历的目录路径
directory = 'C:\\Users\\YJZX\Desktop\\新建文件夹 (2)'
# 获取该目录下所有文件及子目录的列表
file_list = []
for root, dirs, files in os.walk(directory):
for file in files:
file_list.append(os.path.join(root, file))
# 打印结果
print("遍历得到的文件列表如下:")
for file in file_list:
print(file)
#转换上钻通知下达日期
for file in file_list:
df=pd.read_excel(file,sheet_name='2.钻井',header=[2],engine='openpyxl',index_col=0)
data=df.values #获取“2.钻井”工作表
lis=df['上钻通知下达日期'].values
var=len(lis)
lis3=pd.to_datetime(lis,format='%Y/%m/%d')
wb=openpyxl.load_workbook(file)
ws=wb['2.钻井']
if pd.isna(lis3[var-1]) is True:
#转换上钻通知下达日期
for i in range(var):
j=0
j=i+1
if j<(var-1):
ws.cell(row=j+4,column=9,value=lis3[j])
#转换搬迁开始日期
lis=df['搬迁开始日期'].values
lis3=pd.to_datetime(lis,format='%Y/%m/%d')
j=0
for i in range(var):
j=i+1
if j<(var-1):
ws.cell(row=j+4,column=10,value=lis3[j])
print('\n转换结束1',file)
wb.save(file)