import os
import pandas as pd
import PySimpleGUI as sg
#读入目录下的全部文件名称至wjs列表
sg.theme('BrightColors')
layout = [
[sg.Input(), sg.FilesBrowse('选文件',file_types=(('Excel Files', '*.xlsx'),))],
[sg.Text("该目录下已有如下字典")],
[sg.Text("科目字典.xlsx"), sg.Text("区域字典.xlsx")],
[sg.Text("程序员:吴庆宜"), sg.Text("编程语言:python")],
[sg.B('选择完成')]
]
window = sg.Window('选需合并的文件--多选按ctrl或shift', layout)
# while True:
event, values = window.read()
while True:
if event=='选择完成':
wjs=values['选文件'].split(';')
break
if event is None :
break
window.close()
#生成科目字典数据框dict1
df_zd1=pd.read_excel(os.path.dirname(wjs[0])+'/科目字典.xlsx',sheet_name='费用名称')
dict1 = dict(zip(df_zd1['科目名称'], df_zd1['费用名称']))
#生成区域字典数据框dict2
df_zd2=pd.read_excel(os.path.dirname(wjs[0])+'/区域字典.xlsx',sheet_name='区域名称')
dict2 = dict(zip(df_zd2['公司名称'], df_zd2['区域名称']))
index = 0
dfs = []
max_i=len(wjs)
layout1 = [[sg.Text('读入excel- 共'+str(max_i)+'个',key='-xs-')],[sg.ProgressBar(max_i, orientation='h', size=(20, 20), key='progressbar')],
[sg.Cancel()]]
window1 = sg.Window('导入文件进度', layout1)
progress_bar = window1['progressbar']
for i in range(max_i):
event, values = window1.read(timeout=10)
if event == 'Cancel' or event is None:
break
progress_bar.UpdateBar(i + 1)
dfs.append(pd.read_excel(wjs[i]))
window1.find_element('-xs-').update('现在在写文件...')
df = pd.concat(dfs)
df['科目名称']=df['科目名称'].str.strip()
df['费用名称'] = df['科目名称'].map(dict1)
df['区域名称'] = df['公司名称'].map(dict2)
df['金额']=df['借方']-df['贷方']
df['费用大类']=df['科目名称'].apply(lambda x:str(x)[0:4])
text2 = sg.popup_get_file('请输入要保存文件的目录及名字',save_as=True,default_extension='xlsx',file_types=(('excel类型的','.xlsx'),))
df.to_excel(text2,index = False)
window1.close()
sg.popup_auto_close('已生成文件完成,请想看'+text2)