"Apple event timed out" 使用 xlwings 打开大型电子表格
"Apple event timed out" using xlwings to open large spreadsheet
我在 MacOS 上使用以下 xlwings
代码来读取包含许多要执行的公式的大型 Excel 电子表格:
import xlwings as xl
app = xl.App(visible=False)
book = app.books.open("large.xlsx")
book.save()
app.kill()
尝试执行此代码会导致 CommandError
:"Apple event timed out",完整堆栈跟踪:
File "./open_excel_file.py", line 32, in open_excel_file
book = app.books.open("large.xlsx")
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/xlwings/main.py", line 2889, in open
impl = self.impl.open(fullname, update_links, read_only, format, password, write_res_password,
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/xlwings/_xlmac.py", line 209, in open
self.app.xl.open_workbook(workbook_file_name=fullname, update_links=update_links, read_only=read_only,
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/aeosa/appscript/reference.py", line 518, in __call__
raise CommandError(self, (args, kargs), e, self.AS_appdata) from e
appscript.reference.CommandError: Command failed:
OSERROR: -1712
MESSAGE: Apple event timed out.
COMMAND: app('/Applications/Microsoft Excel.app', newinstance=(0, 34521322)).open_workbook(workbook_file_name='large.xlsx', update_links=k.do_not_update_links, read_only=None, format=None, password=None, write_reserved_password=None, ignore_read_only_recommended=None, origin=None, delimiter=None, editable=None, notify=None, converter=None, add_to_mru=None)
有没有办法使用xlwings
打开这个文件,执行所有的公式然后再次保存,而不会遇到这个超时?
xlwings 目前使用底层 appscript 的默认超时。如果在保存事件期间发生这种情况,您应该能够将此作为解决方法,直到此问题得到解决:workbook.api.save(timeout=3000)
,请参阅:https://github.com/xlwings/xlwings/issues/618
编辑:
打开工作簿的方式如下:
import xlwings as xw
app = xw.App(visible=False)
book = app.api.open_workbook(workbook_file_name='/full/path/to/large.xlsx', timeout=3000)
我会尝试在下一个版本中添加本机支持。
我在 MacOS 上使用以下 xlwings
代码来读取包含许多要执行的公式的大型 Excel 电子表格:
import xlwings as xl
app = xl.App(visible=False)
book = app.books.open("large.xlsx")
book.save()
app.kill()
尝试执行此代码会导致 CommandError
:"Apple event timed out",完整堆栈跟踪:
File "./open_excel_file.py", line 32, in open_excel_file
book = app.books.open("large.xlsx")
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/xlwings/main.py", line 2889, in open
impl = self.impl.open(fullname, update_links, read_only, format, password, write_res_password,
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/xlwings/_xlmac.py", line 209, in open
self.app.xl.open_workbook(workbook_file_name=fullname, update_links=update_links, read_only=read_only,
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/aeosa/appscript/reference.py", line 518, in __call__
raise CommandError(self, (args, kargs), e, self.AS_appdata) from e
appscript.reference.CommandError: Command failed:
OSERROR: -1712
MESSAGE: Apple event timed out.
COMMAND: app('/Applications/Microsoft Excel.app', newinstance=(0, 34521322)).open_workbook(workbook_file_name='large.xlsx', update_links=k.do_not_update_links, read_only=None, format=None, password=None, write_reserved_password=None, ignore_read_only_recommended=None, origin=None, delimiter=None, editable=None, notify=None, converter=None, add_to_mru=None)
有没有办法使用xlwings
打开这个文件,执行所有的公式然后再次保存,而不会遇到这个超时?
xlwings 目前使用底层 appscript 的默认超时。如果在保存事件期间发生这种情况,您应该能够将此作为解决方法,直到此问题得到解决:workbook.api.save(timeout=3000)
,请参阅:https://github.com/xlwings/xlwings/issues/618
编辑:
打开工作簿的方式如下:
import xlwings as xw
app = xw.App(visible=False)
book = app.api.open_workbook(workbook_file_name='/full/path/to/large.xlsx', timeout=3000)
我会尝试在下一个版本中添加本机支持。