Python 使用openpyxl将数据添加到现有excel工作表时另存为错误excel

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.

我有一个关于使用openpyxl时出错的问题。我想使用循环将数据保存到具有特定模板的多个excel工作表中。如果循环超过10个值,则此操作正常。但当我想循环100多个文件时,我会收到以下错误消息:

com_错误:(-2147352567,‘发生异常’,(0,‘Microsoft Excel’,‘Methode SaveAs van klasse工作簿为mislukt’,‘xlmain11.chm’,0,-2146827284),无)

代码中偶尔出现错误的部分是:

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中尝试相同的操作。我怀疑您会收到一个弹出窗口,要求您确认覆盖已存在的文件。