from tkinter import * import tkinter.messagebox import tkinter.filedialog from openpyxl import load_workbook workbook=load_workbook(filename='demo.xlsx') root=tkinter.Tk() root.title('测试') root.geometry('520x200') root.resizable(False,False) kk={1:'Sheet1',2:'Sheet2'} filepath00=tkinter.Entry() filepath00.grid(row=1,column=2) def oo(): p = filepath00.get() p1=int(p) kk[1] bb=Button(root,text='提取',command=oo) bb.grid(row=1,column=3)
时间: 2023-11-22 16:51:56 浏览: 160
这段代码存在几个问题:
1. 需要将 tkinter 的 import 语句放在一行中,即 `from tkinter import *, tkinter.messagebox, tkinter.filedialog`。
2. 在导入 openpyxl 库后,需要通过加载工作簿来打开 Excel 文件,但是在代码中并没有指定要打开的工作簿,应该将 `workbook=load_workbook(filename='demo.xlsx')` 放在 oo() 函数内,并且在 oo() 函数中指定要打开的工作簿。
3. 在 oo() 函数中,需要通过 p1 变量来获取要打开的工作表的编号,然后根据编号获取对应的工作表名称。但是在代码中,p1 变量没有被使用,并且 kk[1] 没有返回值,应该将 kk[1] 替换为 kk[p1]。
4. 在 oo() 函数中,需要添加代码来获取要提取的数据,并将数据输出到 GUI 界面中。
修改后的代码如下:
```
from tkinter import *, tkinter.messagebox, tkinter.filedialog
from openpyxl import load_workbook
root = tkinter.Tk()
root.title('测试')
root.geometry('520x200')
root.resizable(False,False)
kk = {1:'Sheet1', 2:'Sheet2'}
filepath00 = tkinter.Entry()
filepath00.grid(row=1, column=2)
def oo():
p = filepath00.get()
p1 = int(p)
sheet_name = kk[p1]
workbook = load_workbook(filename='demo.xlsx')
sheet = workbook[sheet_name]
data = []
for row in sheet.iter_rows(min_row=2):
row_data = []
for cell in row:
row_data.append(cell.value)
data.append(row_data)
for i in range(len(data)):
for j in range(len(data[i])):
label = tkinter.Label(root, text=str(data[i][j]))
label.grid(row=i+3, column=j)
bb = Button(root, text='提取', command=oo)
bb.grid(row=1, column=3)
root.mainloop()
```
阅读全文