用python写入excel表格时,用for循环写入时,如果表格后面本身带数据,它会自动往下找没数据的行写入,怎么才能让他按行的顺序进行写入
这是源码
import tkinter as tk
import openpyxl
from datetime import datetime
import xlrd
# 创建Tkinter窗口
root = tk.Tk()
root.title("计算")
root.geometry("300x500")
root.resizable(False, False)
# 创建条目框,并放置到窗口上
entries = []
for i in range(13):
label = "条目" + str(i + 1) + ": "
tk.Label(root, text=label).grid(row=i, column=0, padx=5, pady=5)
entry = tk.Entry(root)
entry.grid(row=i, column=1, padx=5, pady=5)
entries.append(entry)
# 创建一个清除按钮,用于清除所有条目框中的数据
def clear_entries():
for entry in entries:
entry.delete(0, tk.END)
tk.Button(root, text="清除数据", command=clear_entries).grid(row=14, column=0, columnspan=2, padx=5, pady=20)
# 创建一个保存按钮,用于将所有条目框中的数据保存到Excel表格中
def save_entries():
# 获取系统时间
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# 打开Excel表格
workbook = openpyxl.load_workbook("data.xlsx")
worksheet = workbook.active
# 将条目框中的值写入Excel表格中
row = worksheet.max_row + 1
worksheet.cell(row=row, column=1).value = now
for i, entry in enumerate(entries):
worksheet.cell(row=row, column=i+2).value = float(entry.get())
print("完成")
# 保存Excel表格
workbook.save("data.xlsx")
tk.Button(root, text="保存数据", command=save_entries).grid(row=14, column=3, columnspan=2, padx=5, pady=20)
root.mainloop()
在循环写入 Excel 表格的时候,你可以将行数设置为一个变量,每次写入完数据之后将该变量加1,这样就可以保证每次写入都是在下一行进行的。
下面是修改后的 save_entries() 函数的代码:
def save_entries():
# 获取系统时间
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# 打开Excel表格
workbook = openpyxl.load_workbook("data.xlsx")
worksheet = workbook.active
# 将条目框中的值写入Excel表格中
row = worksheet.max_row + 1
for i, entry in enumerate(entries):
worksheet.cell(row=row, column=i+1).value = float(entry.get())
worksheet.cell(row=row, column=len(entries)+1).value = now
print("完成")
# 保存Excel表格
workbook.save("data.xlsx")
这里将 row 变量初始化为表格的最后一行加 1,这样可以保证每次写入都是在下一行进行的。另外,最后写入时间戳的列号为 len(entries)+1,因为你的条目数是 13,所以时间戳的列号为 14。
注意:如果你的 Excel 表格中本来已经有数据了,那么程序可能会将新数据写入到表格的最后一行之后。如果你希望新数据始终写入到表格的最后一行之后,可以将 row 的初始化代码修改为 row = worksheet.max_row + 2。
回答不易,望采纳🥰