使用win32com从xls转换为xlsx时出错.如果我使用其他Excel工作表,该程序将抛出错误

joh*_*ohn 7 xlsx win32com python-3.x

import pandas as pd
import os
import win32com.client
import win32com.client.gencache
fname = "C:\\Users\\prashanth\\Desktop\\student.xls"
excel = win32com.client.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open(fname)
wb.SaveAs(fname+"x", FileFormat = 51)    
wb.Close()                               
excel.Application.Quit()
Run Code Online (Sandbox Code Playgroud)

回溯(最近一次调用最后一次):文件"c:\ users\prashanth\appdata\local\programs\python\python36-32\lib\site-packages\win32com\client\gencache.py",第536行,在EnsureDispatch中= disp.oleobj .GetTypeInfo()pywintypes.com_error:( - 2147418111,'呼叫被被叫方拒绝',无,无)

在处理上述异常期间,发生了另一个异常:

回溯(最近一次调用最后一次):文件"dailyreports2.py",第6行,在excel = win32com.client.gencache.EnsureDispatch('Excel.Application')文件"c:\ users\prashanth\appdata\local\programs \在SecureDispatch中,python\python36-32\lib\site-packages\win32com\client\gencache.py",第547行引发TypeError("此COM对象无法自动执行makepy进程 - 请为此对象手动运行makepy")TypeError :此COM对象无法自动执行makepy过程 - 请为此对象手动运行makepy

Eug*_*nok 4

在这些行之后我得到了同样的错误:

import win32com.client
import win32com.client.gencache
xl = win32com.client.gencache.EnsureDispatch('Excel.Application')
Run Code Online (Sandbox Code Playgroud)

机器重新启动对我有用。

  • 我收到了这个错误。有时重新启动会起作用。还有一次,当重新启动无法解决问题时,我将代码更改为“win32com.client.DispatchEx('Excel.Application')”并且它起作用了。不知道为什么。 (2认同)