python小程序,提取路徑下所有excel表中數(shù)據(jù),輸入界面是基于TK語(yǔ)言編寫的

用python識(shí)別路徑下所有excel文件,并檢索每個(gè)excel文件中的sheet表,并匹配搜索關(guān)鍵詞,如果sheet表中含有關(guān)鍵詞則提取表中的markov數(shù)據(jù)到數(shù)組中,同時(shí)點(diǎn)擊數(shù)據(jù)輸出可將數(shù)據(jù)輸出到名稱為output_data_liu的excel表中。

from tkinter import Tk, Button, filedialog, Label, Entry
# 創(chuàng)建主窗口
window = Tk()
##################################### 創(chuàng)建3個(gè)靜態(tài)文本框和輸入框定義矩陣規(guī)模和數(shù)量
label1 = Label(window, text="矩陣行數(shù)")
label1.grid(row=0, column=0)
entry1 = Entry(window)
entry1.grid(row=0, column=1)

label2 = Label(window, text="矩陣列數(shù)")
label2.grid(row=1, column=0)
entry2 = Entry(window)
entry2.grid(row=1, column=1)

label3 = Label(window, text="矩陣數(shù)量")
label3.grid(row=2, column=0)
entry3 = Entry(window)
entry3.grid(row=2, column=1)


label4 = Label(window, text="載荷類型_表格sheet關(guān)鍵詞")
label4.grid(row=0, column=2)
entry4 = Entry(window)
entry4.grid(row=0, column=3)
###########################################定義矩陣初始化子函數(shù),根據(jù)靜態(tài)文本框數(shù)據(jù)生成一定數(shù)量一定格式的矩陣
def martrix_gen():
   entry1.delete(0, 'end')  # 設(shè)置缺省值128
   entry1.insert('end', 128)
   entry2.delete(0, 'end')  # 設(shè)置缺省值128
   entry2.insert('end', 128)
   entry3.delete(0, 'end')  # 設(shè)置缺省值
   entry3.insert('end', int(len(filepath)))
   global input_data0
   global input_data1
   global input_data2
   input_data0 = int(entry1.get())+1
   input_data1 = int(entry2.get())+1
   input_data2 = int(entry3.get())
   print(input_data0 )
   print(input_data1 )
   print(input_data2 )
   num_arrays = input_data2  # 要?jiǎng)?chuàng)建的二維數(shù)組的數(shù)量
   array_size0 = input_data0  # 矩陣行數(shù)
   array_size1 = input_data1  # 矩陣列數(shù)
   global arrays
   arrays = []  # 存儲(chǔ)多個(gè)二維數(shù)組的列表
# 使用 for 循創(chuàng)建多個(gè)矩陣
   for _ in range(num_arrays):
       array = [[0] * input_data1 for _ in range(input_data0 )]
       arrays.append(array)
   for i, array in enumerate(arrays, start=1):
       print(f"Array {i}:")
       for row in array:
           print(row)
       print()
###########################################定義選擇文件子函數(shù)
def open_file():
   Tk().withdraw()  # 隱藏根窗口
   global file_names
   global folder_path
   global filepath
   folder_path = filedialog.askdirectory()
   print(folder_path)
   import os
   file_names = [file for file in os.listdir(folder_path) if file.endswith('.xls') or file.endswith('.xlsx')]
   print(file_names[0])
   print(len(file_names))
   filepath= [[[] for i in range(1)] for i in range(len(file_names))]
###########################################將路徑名稱與文件名稱合并為后續(xù)數(shù)據(jù)讀取做準(zhǔn)備
   for i in range(len(file_names)):
       filepath[i][0] = os.path.join(folder_path, file_names[i])
   print(filepath)
   for row_1 in filepath:
       print(row_1)
   print(len(filepath))
###########################################定義裝載數(shù)據(jù)子函數(shù)
def data_load():
   Tk().withdraw()  # 隱藏根窗口
   print(len(filepath))
   print(arrays)
   import pandas as pd
   global keyword
   keyword = str(entry4.get())
   for i in range(input_data2):
       xls = pd.read_excel(filepath[i][0], sheet_name=None)
       for sheet_name, df in xls.items():
           if keyword in sheet_name:
               data_temp = pd.read_excel(filepath[i][0], sheet_name, header=None).iloc[3:132, 0:129]
               print(sheet_name)
               for j in range(input_data0):
                   for k in range(input_data1):
                      arrays[i][j][k]=data_temp[k+0][3+j]
   print(data_temp)
   data1=arrays[1][15][0]*2
   print(data1)
   print(arrays[1][15][1])
   print(arrays[4][15][1])
   import tkinter.messagebox
   tkinter.messagebox.showinfo('數(shù)據(jù)裝載完成')
###########################################定義輸出數(shù)據(jù)子函數(shù)
def data_output():
   Tk().withdraw()  # 隱藏根窗口
   global folder_path2
   global filemane_temp1
   import os
   from openpyxl import Workbook
   from openpyxl import load_workbook
   import pandas as pd
   # 在指定路徑下生成名為outputdata的excel文件
   filemane_temp1='output_data_liu.xlsx'
   folder_path2 = filedialog.askdirectory()
   folder_path2 = os.path.join(folder_path2, filemane_temp1)
   workbook = Workbook()
   workbook.save(folder_path2)
   workbook = load_workbook(folder_path2)
   # 在指定路徑下生成名為outputdata的excel文件生成新sheet
   for i in range(input_data2):
       xls = pd.read_excel(filepath[i][0], sheet_name=None)
       for sheet_name, df in xls.items():
           if keyword in sheet_name:
               new_sheet = workbook.create_sheet(title=file_names[i])
               data_temp = pd.read_excel(filepath[i][0], sheet_name, header=None).iloc[3:132, 0:129]
               for j in range(input_data0):
                   for k in range(input_data1):
                       new_sheet.cell(row=j + 1, column=k + 1).value = data_temp[k + 0][3 + j]
   workbook.save(folder_path2)
   import tkinter.messagebox
   tkinter.messagebox.showinfo('數(shù)據(jù)輸出完成')

############################################## 矩陣初始化按鈕
button = Button(window, text="矩陣初始化", command=martrix_gen)
button.grid(row=5, column=1)
############################################## 創(chuàng)建文件選擇按鈕
button = Button(window, text="選擇文件", command=open_file)
button.grid(row=4, column=1)
############################################## 創(chuàng)建裝載數(shù)據(jù)按鈕
button = Button(window, text="數(shù)據(jù)裝載", command=data_load)
button.grid(row=1, column=3)
############################################## 創(chuàng)建輸出數(shù)據(jù)按鈕
button = Button(window, text="數(shù)據(jù)輸出", command=data_output)
button.grid(row=2, column=3)
##################################################### 運(yùn)行主循環(huán)
window.mainloop()

登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP

6
3