我目前正在尝试将几个pandas数据帧写入现有的excel工作簿。我之所以选择xlwings是因为它在保存工作簿中的公式方面取得了成功。这段代码工作了大约两天,然后出现了一个模棱两可的错误。知道为什么这段代码会失败吗?
def write_packaged_outputs(packaged_outputs):
print("Writing to template")
template_file = './SlotVizTemplate.xlsx'
output_file = './SlotVizOutput.xlsx'
workbook = xlwings.Book(template_file)
for packaged_output in packaged_outputs:
df = packaged_output['dataframe']
sheet_name = packaged_output['sheet_name']
cell = packaged_output['cell']
worksheet = workbook.sheets[sheet_name]
worksheet.range(cell).options(index=False, header=False).value = df
workbook.save(output_file)
xlwings.apps[0].quit()
代码似乎在工作簿分配失败:
workbook = xlwings.Book(template_file)
这是错误:
Traceback (most recent call last):
File "C:\Users\philector\Documents\Development\Python\SlotViz\SlotVizTool_v1.py", line 214, in <module>
write_packaged_outputs(packaged_outputs)
File "C:\Users\philector\Documents\Development\Python\SlotViz\SlotVizTool_v1.py", line 160, in write_packaged_outputs
workbook = xlwings.Book(template_file)
File "C:\Users\philector\AppData\Local\Programs\Python\Python36-32\lib\site-packages\xlwings\main.py", line 479, in __init__
app = App(add_book=False)
File "C:\Users\philector\AppData\Local\Programs\Python\Python36-32\lib\site-packages\xlwings\main.py", line 204, in __init__
self.impl = xlplatform.App(spec=spec, add_book=add_book)
File "C:\Users\philector\AppData\Local\Programs\Python\Python36-32\lib\site-packages\xlwings\_xlwindows.py", line 288, in __init__
self._xl = COMRetryObjectWrapper(DispatchEx('Excel.Application'))
File "C:\Users\philector\AppData\Local\Programs\Python\Python36-32\lib\site-packages\win32com\client\__init__.py", line 113, in DispatchEx
dispatch = pythoncom.CoCreateInstanceEx(clsid, None, clsctx, serverInfo, (pythoncom.IID_IDispatch,))[0]
pywintypes.com_error: (-2147024703, 'OLE error 0x800700c1', None, None)
enter code here
我试图弄清楚错误代码是什么,并想出了这个:
我只是不确定错误的含义,或者我需要做些什么来解决它。
更新
使用pypiwin32模块启动Excel实例也失败了,所以我想我会重新安装,如果修复它。才不是。我们收到类似于xlwings的错误消息。
import win32com.client
win32com.client.Dispatch('Excel.Application')
更新2
我想我发现了这个问题。我有一台64位的机器,由于某种原因,我工作的公司安装了32位版本的Office 2016。