检查 Excel 工作簿是否已打开并准备就绪

问题描述 投票:0回答:1

我有一个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)

但不幸的是,脚本仍然因同样的错误而崩溃。

python xlsx
1个回答
0
投票

我们可以尝试检查工作簿的准备情况,直到确认工作簿已完全打开。

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()
© www.soinside.com 2019 - 2024. All rights reserved.