【发布时间】:2021-10-11 13:22:27
【问题描述】:
我正在尝试写入一个 excel 文件(LibreOffice Calc 实际上不是 excel)。我正在尝试保存历史数据,然后在我们的季度会议上绘制状态更新图表(如果格式正确,我可以将信息写入图表,因此这不是问题)。
但是,当我在我的 Tkinter 窗口上按下一个按钮时,我遇到了一个问题,我想要写入的信息记录在我的 excel 文件中,但是每次我按下按钮时,它都会覆盖第一行。下面是我的代码的过度简化示例。我不知道还要向我的 def 函数添加什么以返回新行,所以我不会覆盖我的信息。想法?
from tkinter import *
from openpyxl import Workbook
def excel ():
wb=Workbook()
ws=wb.active
cellx='A1'
ws[cellx]=E1.get()
wb.save("sample.xlsx")
#Assumeing I need something similar to ws.cell(row=cellx+1) but it doesn't work.
root=Tk()
L1=Label(root,text="Tester")
E1=Entry(root,width=10)
b1=Button(root,text="Save",command=excel)
L1.pack()
E1.pack()
b1.pack()
root.mainloop()
在实际代码中,会有一些输入框包含单词和一些只包含数字。
【问题讨论】:
-
你认为
ws[cellx]=E1.get(),当cellx = 'A1'在前面的陈述中明确,应该做什么?你认为cellx应该怎样才能完成这项工作? -
如果你写在
A1,那么你写在第一行。如果您想保存在新行中,那么当您按下按钮时,您必须将A1更改为A2,然后更改为A3,等等。因为A1是一个文本,所以你不能这样做"A1"+1.你必须将行号保留在其他变量中 -row = 1然后再做row +=1,cellx = f"A{row}"
标签: python excel tkinter openpyxl data-entry