How to use file dialog open multiple excel files and use 'pandas' & 'openpyxl' update excel data?

Viewed 34
  1. I have merged data between two excels

  2. I don't want re-write excel all data, so use pandas & openpyxl to re-write update data in specify columns

    #read df1 & df2 Excel file
    df1 = pd.read_excel('C:/Users/Desktop/Data1.xlsx')
    df2 = pd.read_excel('C:/Users/Desktop/Data2.xlsx')
    
    #df1 & df2 data compare
    df_merge1 = pd.merge(df1, df2, on=['Name', 'Reg Date'], how='left', indicator=True)
    df_merge2 = pd.merge(df1, df2, on=['Name', 'Reg Date'], how='right', indicator=True)
    
    #Update df1 & df2 columns data
    df1_upd_col_c = df_merge1['Duplicated'] = np.where(df_merge1['Duplicated'].isnull() & (df_merge1['_merge'] == 'both'), 'Y', df_merge1['Duplicated'])
    df2_upd_col_c = df_merge2['Check'] = np.where(df_merge2['Check'].isnull() & (df_merge2['_merge'] == 'right_only'), 'Not Match', df_merge2['Check'])
    
    #read, re-write & save df1 column updated data
    wb1 = xl.load_workbook('C:\\Users\\Desktop\\Data1.xlsx')
    ws1 = wb1.active
    for df1_row, df1_value in enumerate(df1_upd_col_c, start=2):
        ws1[f'C{df1_row}'].value = df1_value
    
    wb1.save('C:\\Users\\Desktop\\Data1.xlsx')
    
    #read, re-write & save df2 column updated data
    wb2 = xl.load_workbook('C:\\Users\\Desktop\\Data2.xlsx')
    ws2 = wb2.active
    for df2_row, df2_value in enumerate(df2_upd_col_c, start=2):
        ws2[f'C{df2_row}'].value = df2_value
    
    wb2.save('C:\\Users\\Desktop\\Data2.xlsx')
    
  3. Now, I want to use open file dialog to excute above operation but I don't know how to open multiple excel files with filedialog.askopenfilenames and how to read the excel files path with pandas & openpyxl?

    # importing pandas module
      import pandas as pd
      from tkinter import *
      from tkinter import filedialog
      from tkinter import messagebox as msg
    
      def openFiles():
          filepath = filedialog.askopenfilenames(initialdir='C:\\Users\\Desktop',
                                                 filestypes=('Excel Files', '*.xlsx'))
          file = open(filepath, 'r')
          print(file.read())
          file.close()
    
      window = Tk()
      button = Button(text='Open', command=openFiles)
      button.pack()
      window.mainloop()
    
0 Answers
Related