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()
工程師必備
- 項(xiàng)目客服
- 培訓(xùn)客服
- 平臺(tái)客服
TOP




















