2017-04-03 118 views
0

我用tkinter构建了一个GUI。有两个按钮,一个用于加载Excel表格并解析所有单元格并打印它们的值。另外,我有一系列带有标题的空文本框。我想要实现的是将解析后的Excel单元格加载到一个变量中,然后用单元格值(即所讨论的变量)填充空的文本框。任何指针将不胜感激。这里是我到目前为止的代码:如何在tkinter GUI中的文本被“打开文件”菜单选择并加载后,将Excel单元格值加载到空的文本框中?

#!/usr/bin/python3 

from tkinter import filedialog 
from tkinter import * 
import openpyxl 

from openpyxl import load_workbook 

#Define Window Geometry 

main = Tk() 
main.geometry("1024x768") 
main.title("Window Title") 

#Define Empty Cells to be Filled in by Excel File & Calculation 

def OpenDataInputSpreadsheetCallBack(): 
    main.iconify() 
    file_path = filedialog.askopenfilename(initialdir = "file_path_goes_here",title = "Choose Input Spreadsheet",filetypes = (("Excel 2010 files","*.xlsx"),("Excel 2003 Files","*.xls"))) 
    wb = load_workbook(filename = file_path, read_only=True) 
    ws = wb.active 
    for row in ws.iter_rows(): 
     for cell in row: 
      if (cell.value==None): 
       pass 
      else: 
       print(cell.value) 
# 
# 
#Function to display empty rows and columns    
# 
height = 5 
width = 6 
for x in range(1,height+1): #Rows 
    for y in range(width): #Columns 
     b = Entry(main, text='') 
     b.grid(row=x, column=y)  
#  
# Define Buttons  

b1 = Button(main, text = "Open Data Input Spreadsheet", command = OpenDataInputSpreadsheetCallBack) 
b1.place(x = 1,y = 120) 
b2 = Button(main, text='Quit', command=main.destroy) 
b2.place(x = 1,y = 150) 
## 
## 
### Initialize Column Headers 
Label(main, text="Header1").grid(row=0, column=0, sticky=W) 
Label(main, text="Header2").grid(row=0, column=1, sticky=W) 
Label(main, text="Header3").grid(row=0, column=2, sticky=W) 
Label(main, text="Header4").grid(row=0, column=3, sticky=W) 
Label(main, text="Header5").grid(row=0, column=4, sticky=W) 
Label(main, text="Header6").grid(row=0, column=5, sticky=W) 
### 
# Define a function to close the window. 
def quit(event=None): 
    main.destroy() 
# Cause pressing <Esc> to close the window. 
main.bind('<Escape>', quit) 
# 
# 
main.mainloop() 
+0

从你的'xlsx'显示一些**行数据** – stovfl

+0

感谢您的回复。 当我加载xlsx文件并解析它时,会出现以下内容(第一行(“联盟”到“离开”)是标题,低于我要在GUI中显示的数据 - 标题显示为OK)。这是一个样本行,完整的xlsx拥有这个足球联赛的所有装置。 联赛|日期|主页|客场 Bundesliga | 27.08.16 |汉堡|因戈尔施塔特 – Stam

回答

1

问题:我所试图实现的是对每个单元格的值

加载解析Excel单元格到一个变量,虚则补之文本框

您不必使用variable,您可以直接将cell values传递给文本框。
例如:

class Textbox(object): 
    text = None 

series_of_textboxes = [Textbox(),Textbox(),Textbox(),Textbox()] 
# start reading from row 2 
for i, row in enumerate(ws.iter_rows(min_row=2)): 
    series_of_textboxes[i].text = ' '.join(cell.value for cell in row) 

print(series_of_textboxes[0].text) 

输出

德甲16年8月27日汉堡英戈尔斯塔特

与Python测试:3.4.2 - openpyxl:2.4.1
回来和旗哟你的问题回答如果这是你的工作或评论为什么不。

相关问题