Python 使用openpyxl将数据添加到现有excel工作表时另存为错误excel
我有一个关于使用openpyxl时出错的问题。我想使用循环将数据保存到具有特定模板的多个excel工作表中。如果循环超过10个值,则此操作正常。但当我想循环100多个文件时,我会收到以下错误消息: com_错误:(-2147352567,‘发生异常’,(0,‘Microsoft Excel’,‘Methode SaveAs van klasse工作簿为mislukt’,‘xlmain11.chm’,0,-2146827284),无) 代码中偶尔出现错误的部分是:Python 使用openpyxl将数据添加到现有excel工作表时另存为错误excel,python,excel,xlwings,save-as,Python,Excel,Xlwings,Save As,我有一个关于使用openpyxl时出错的问题。我想使用循环将数据保存到具有特定模板的多个excel工作表中。如果循环超过10个值,则此操作正常。但当我想循环100多个文件时,我会收到以下错误消息: com_错误:(-2147352567,‘发生异常’,(0,‘Microsoft Excel’,‘Methode SaveAs van klasse工作簿为mislukt’,‘xlmain11.chm’,0,-2146827284),无) 代码中偶尔出现错误的部分是: for row in test.
for row in test.index:
g = data.loc[row]
app=xw.App(visible=False,add_book=False)
app.display_alerts=False
app.screen_updating=False
filepath = 'output/'+ g.location +"_"+g.filename
df = details_dict[g.filename]
df = df.rename(columns=df.iloc[0]).drop(df.index[0])
wb = app.books.open('Template3.xlsx')
# Save the template under a new name for every row in data.index
wb.save(filepath[:-4])
# Look for the worksheet
sht = wb.sheets['Blad1']
# put value in specific cell
sht.range('C12').value = merged.iloc[row,12]
sht.range('C13').value = merged.iloc[row,13]
sht.range('C14').value = merged.iloc[row,14]
sht.range('C15').value = merged.iloc[row,15]
sht.range('C16').value = merged.iloc[row,5]
sht.range('C17').value = merged.iloc[row,6]
sht.range('C18').value = merged.iloc[row,8]
sht.range('C19').value = merged.iloc[row,7]
sht.range('C20').value = merged.iloc[row,11]
sht.range('A52').value = df
sht.range('A52').options(pd.DataFrame, expand='table').value
wb.close()
app.quit()
time.sleep(5)
例外情况来自COM,因此不是openpyxl。我假设
xw
指的是Xlwings(这就是为什么别名不是一个好主意的原因之一),所以您可能需要对此进行检查。文件路径[:-4]
可能有问题。打印出来查看它包含的内容,然后手动在Excel中尝试相同的操作。我怀疑您会收到一个弹出窗口,要求您确认覆盖已存在的文件。