我正在使用 xlwings 打开一个 Excel 文件 wb,执行一些操作,然后尝试将其保存到目录中。问题是正常的 xw.Book.save() 偶尔会引发错误。
对于我继续使用此代码,至关重要的是我可以相信它不会抛出错误。
以下代码给出以下错误:
代码:
Some_data = r"C:\Users\FrodeWilkensen\OneDrive - Norfund\Frode Wilkensen\Some_data.xlsx" #filepath to some data
Original = r"C:\Users\FrodeWilkensen\OneDrive - Norfund\Frode Wilkensen\Original.xlsx" #filepath to another file
df = pd.read_excel(Some_data, engine = "openpyxl") #reading some_data, assigning as df
wb = xw.Book(Original) #assigning original workbook as xlwings wb
ws = wb.sheets["dump"] #the sheet called "dump" assigned as ws
ws["B2"].options(pd.DataFrame, index=False, header=False, expand="table").value = df #some operations
wb.save(r"C:\Users\FrodeWilkensen\OneDrive - Norfund\Frode Wilkensen\dumped.xlsx") #want to save it in same directoy
#gets thrown an error, shown below.
错误:
---------------------------------------------------------------------------
com_error Traceback (most recent call last)
Input In [49], in <cell line: 11>()
7 ws = wb.sheets["dump"] #the sheet called "dump" assigned as ws
8 ws["B2"].options(pd.DataFrame, index=False, header=False, expand="table").value = df #some operations
---> 11 wb.save(r"C:\Users\FrodeWilkensen\OneDrive - Norfund\Frode Wilkensen\dumped.xlsx") #want to save it in same directoy
12 #gets thrown an error, shown below.
13 wb.app.kill()
File ~\anaconda3\lib\site-packages\xlwings\main.py:874, in Book.save(self, path)
872 path = utils.fspath(path)
873 with self.app.properties(display_alerts=False):
--> 874 self.impl.save(path)
File ~\anaconda3\lib\site-packages\xlwings\_xlwindows.py:582, in Book.save(self, path)
580 alerts_state = self.xl.Application.DisplayAlerts
581 self.xl.Application.DisplayAlerts = False
--> 582 self.xl.SaveAs(os.path.realpath(path), FileFormat=file_format)
583 self.xl.Application.DisplayAlerts = alerts_state
File ~\anaconda3\lib\site-packages\xlwings\_xlwindows.py:70, in COMRetryMethodWrapper.__call__(self, *args, **kwargs)
68 while True:
69 try:
---> 70 v = self.__method(*args, **kwargs)
71 if isinstance(v, (CDispatch, CoClassBaseClass, DispatchBaseClass)):
72 return COMRetryObjectWrapper(v)
File C:\Users\FRODEW~1\AppData\Local\Temp\gen_py\3.9\00020813-0000-0000-C000-000000000046x0x1x9.py:46807, in _Workbook.SaveAs(self, Filename, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local, WorkIdentity)
46804 def SaveAs(self, Filename=defaultNamedNotOptArg, FileFormat=defaultNamedNotOptArg, Password=defaultNamedNotOptArg, WriteResPassword=defaultNamedNotOptArg
46805 , ReadOnlyRecommended=defaultNamedNotOptArg, CreateBackup=defaultNamedNotOptArg, AccessMode=1, ConflictResolution=defaultNamedOptArg, AddToMru=defaultNamedOptArg
46806 , TextCodepage=defaultNamedOptArg, TextVisualLayout=defaultNamedOptArg, Local=defaultNamedOptArg, WorkIdentity=defaultNamedOptArg):
> 46807 return self._oleobj_.InvokeTypes(3174, LCID, 1, (24, 0), ((12, 17), (12, 17), (12, 17), (12, 17), (12, 17), (12, 17), (3, 49), (12, 17), (12, 17), (12, 17), (12, 17), (12, 17), (12, 17)),Filename
46808 , FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup
46809 , AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout
46810 , Local, WorkIdentity)
com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft Excel', 'SaveAs method of Workbook class failed', 'xlmain11.chm', 0, -2146827284), None)
正如您在错误末尾看到的那样,它表示 Workbook 类的 SaveAs 方法失败 - 这是 VBA 方法错误? 有人有什么建议吗?`
提前谢谢你:)
虽然这个问题有点老了,但我今天遇到了完全相同的问题,即使在确保我使用
wb.save()
方法的完整路径之后,如 this 答案中详述。
我认为此实例中的问题是由保存到同步的 OneDrive 文件夹引起的,如问题中的示例路径所示。尽管我主要是猜测,但我认为问题是由 OneDrive 中新文件的同步以及底层 SaveAs 调用在查找本地路径时出现问题引起的。
我通过在运行保存到文件夹的脚本时暂停 OneDrive 同步来解决此问题。
是的,同意。不要使用 OneDrive 中的文件夹来存储生成的工作表。当我更改存储文件夹后,它工作得很好