Я создаю окно в TKinter, которое позволяет вам выбрать файл Excel, а затем отображает кнопку для каждого листа в файле Excel. Нажав кнопку с именем листа, вы выбираете этот лист для извлечения в текстовый файл. Это также позволяет вам вводить с и длину таблицы, которую вы хотите извлечь из листа, таким образом, я могу поместить эту информацию в функцию, которая извлечет таблицу из выбранного листа Excel и упорядочит ее определенным образом в тексте. документ.
Всплывающее окно, позволяющее выбрать файл:
Обновление окна с именем файла и именами листов после выбора файл Excel:
Затем выберите лист, который вы хотите использовать, и введите число ширины и число длины в поля.
Мне нужно было создать кнопку динамика c после выбора документа Excel, который работает. Но ввод ширины и длины таблицы не работает, и когда я go запускаю извлечение, он говорит, что эти переменные не определены. Я не уверен, почему при запуске .get () не берется число, указанное в поле ввода.
Я пытаюсь понять, как организовать это в класс, как это делают все остальные, потому что, похоже, это помогает с глобальными переменными. Я новичок в Python и Tkinter, так что это иностранный. Но так ли это решит проблему невозможности получить текущую запись в полях ввода?
Примечание: здесь показан не весь код извлечения текста, так как у меня уже есть эта работа. Для работы достаточно листа и размера стола.
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import os
from openpyxl import load_workbook
from tkinter import * #for pop-up window file searching
from tkinter import filedialog #for pop-up window file searching
root = Tk() #root widgtet, always first. "The window"
root.title('Extract Data From Excel File') #root window title
### excel_file_button ##############################################################
### function for a button to open a file window and locate desired excel file #######
def open():
global my_file
global wb_og
global sheets
root.filename = filedialog.askopenfilename(initialdir="/RawData", title="Select Data", filetypes=(("Excel Workbook Files","*.xlsx"),("all files", "*.*"))) #always put raw data in RawData folder for ease of access
#load in workbook and extract sheet names######
my_file = (root.filename)
wb_og = load_workbook(my_file)
sheets = wb_og.sheetnames
file_name = os.path.basename(my_file)
my_label = Label(root, text=file_name).grid(row=1, columnspan=3, sticky='ew')
# Buttons appears after file is loaded
for i in range(0, len(sheets)):
s = sheets[i]
sheet_button=Button(root, text="%s" % sheets[i], command=lambda s=s: sheet_select(s))
sheet_button.grid(row=int(((i+(i%3))/3)+1) + 1, column=(i % 3), sticky='ew')
#root.update()
#Input fields for phage and strain number tested
w_e = Entry(root, borderwidth=5, width=15)
l_e = Entry(root, borderwidth=5, width=15)
w_e.grid(row =(len(sheets)+2), column=0)
l_e.grid(row =(len(sheets)+2), column=2)
w_e.insert(0, "insert width")
l_e.insert(0, "insert length")
#Button to take prevoius inputs and extract data to text file
creation_button = Button(root, text='Create Text File', command=extract_to_txt)
creation_button.grid(row=(len(sheets)+3), columnspan=3)
### select worksheet button ######################################################
def sheet_select(sheet_name):
global choosen_sheet
#sheet_label = Label(root, text=sheet_name).pack()
choosen_sheet = sheet_name
print(choosen_sheet)
##########################################################################################
### extract data to text file button #############################################
##########################################################################################
def extract_to_txt():
wid = w_e.get() #create integer variable from entry
leng = l_e.get() #create integer variable from entry
xlsx = pd.read_excel(my_file, choosen_sheet)
#removed extra rows without data
host_range_xlsx = xlsx.iloc[0:wid, :]
host_range_xlsx.fillna(0) #fill all nan values with 0
hr_all = pd.DataFrame(host_range_xlsx)
hr = hr_all.iloc[:,0:leng]
print(hr)
### Button for Excel File ######################################################
excel_file_button = Button(root, text="Open File", command=open).grid(row=0, column=0, columnspan=3, sticky='ew', pady=10) #col span 3 so everyworks in a grid system 3 wide
root.mainloop()