python写的合并excel并列迭代和文件取存

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值