我有一个Python脚本,可以循环打开Excel工作簿,填充它们并保存它们(xlsx文件相当大)。有时,运行时我会收到此错误:
com_error: (-2147418111, 'Call was rejected by callee.', None, None)
我检查了一下,可能是因为在“打开”命令尚未完成时执行了“另存为”命令,导致崩溃。我试图在“打开”命令之后在脚本中创建一个检查,以检查 Excel 文件是否完全打开并准备就绪,如果没有,我想强制 1 秒的睡眠时间。
我试过这个:
def Is_file_ready(workbook):
try:
_ = workbook.sheets[0]
return True
except Exception:
return False
wb = app.books.open({filepath})
while not Is_file_ready(wb):
time.sleep(1)
但不幸的是,脚本仍然因同样的错误而崩溃。
我们可以尝试检查工作簿的准备情况,直到确认工作簿已完全打开。
app = win32com.client.Dispatch("Excel.Application")
app.Visible = False
filepath = "path_to_your_excel_file.xlsx"
max_retries = 30 # Adjust this number as needed
wb = app.Workbooks.Open(filepath)
retries = 0
while not is_file_ready(wb):
time.sleep(1)
retries += 1
if retries > max_retries:
print("Failed to open the workbook after multiple attempts.")
break
if retries <= max_retries:
wb.SaveAs(filepath)
wb.Close(SaveChanges=False)
app.Quit()