【发布时间】:2021-06-18 08:57:01
【问题描述】:
我正在尝试创建一个可以更新(添加数据)到现有 .xlsx 文件的函数。
def update_excel(path, sheetname, data):
filename = path
with pd.ExcelWriter(filename, mode='a',engine="openpyxl") as writer:
print('SHEETNAME', sheetname)
df = pd.read_excel(path, sheetname)
cols_del= 'Unnamed: 0'
del df[cols_del]
print('SHEETNAME1', sheetname)
df = pd.concat((df, data),sort=True)
print('SHEETNAME2', sheetname)
df.to_excel(writer, sheet_name=sheetname)
print('SHEETNAME3', sheetname)
writer.save()
print('SHEETNAME4', sheetname)
print("Booked")
当前示例:这将获取 sheet1 的数据并使用新条目对其进行更新,但将新的更新版本写入名为 sheet11 而不是 sheet1 的新工作表。在上面的所有打印语句中,它都会打印 sheet1,所以我很困惑。
正常打开 excel 文件时,我从 excel 中收到一条错误消息:
我们发现“文件名”中的某些内容存在问题。 xlsx'。你想让我们尽量恢复吗?
我认为这会导致 excel 从 Sheet1 中尽可能多地恢复,然后将其放入具有更新的 Sheet11 中,我该如何消除此错误?
【问题讨论】:
-
filename未在您的函数中定义。你不是在尝试读写同一个文件,对吧? -
另外,如果excel文件打开了,会被锁定编辑,所以需要
try: except:或者类似的检查。 -
@crayxt 是的,我想读写同一个文件。我定义了文件名=路径
-
@D.L 执行该函数时excel文件全部关闭
标签: python excel pandas xlsxwriter