xls文件怎么转换xlsx
本帖最后由 lemon_wb 于 2021-9-25 18:14 编辑需要讲旧版的xls文件转换为xlsx文件,找到一段代码,运行有错误,不知道是怎么回事,求助~
import win32com.client as win32
fname = "C:\\Users\\test\\Desktop\\***.xls"
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open(fname)
wb.SaveAs(fname+"x", FileFormat = 51) #FileFormat = 51 is for .xlsx extension
wb.Close() #FileFormat = 56 is for .xls extension
excel.Application.Quit()
报错信息如下:
Traceback (most recent call last):
File "d:/Users/test/PycharmProjects/pythonProject1/333333.py", line 4, in <module>
excel = win32.gencache.EnsureDispatch('Excel.Application')
File "D:\Users\test\PycharmProjects\pythonProject1\venv\lib\site-packages\win32com\client\gencache.py", line 531, in EnsureDispatch
mod = EnsureModule(tla, tla, tla, tla, bForDemand=bForDemand)
File "D:\Users\test\PycharmProjects\pythonProject1\venv\lib\site-packages\win32com\client\gencache.py", line 515, in EnsureModule
module = MakeModuleForTypelib(typelibCLSID, lcid, major, minor, progressInstance, bForDemand = bForDemand, bBuildHidden = bBuildHidden)
File "D:\Users\test\PycharmProjects\pythonProject1\venv\lib\site-packages\win32com\client\gencache.py", line 284, in MakeModuleForTypelib
makepy.GenerateFromTypeLibSpec( (typelibCLSID, lcid, major, minor), progressInstance=progressInstance, bForDemand = bForDemand, bBuildHidden = bBuildHidden)
File "D:\Users\test\PycharmProjects\pythonProject1\venv\lib\site-packages\win32com\client\makepy.py", line 279, in GenerateFromTypeLibSpec
gen.generate(fileUse, bForDemand)
File "D:\Users\test\PycharmProjects\pythonProject1\venv\lib\site-packages\win32com\client\genpy.py", line 829, in generate
self.do_generate()
File "D:\Users\test\PycharmProjects\pythonProject1\venv\lib\site-packages\win32com\client\genpy.py", line 892, in do_generate
oleItems, enumItems, recordItems, vtableItems = self.BuildOleItemsFromType()
File "D:\Users\test\PycharmProjects\pythonProject1\venv\lib\site-packages\win32com\client\genpy.py", line 757, in BuildOleItemsFromType
oleItem, vtableItem = self._Build_Interface(type_info_tuple)
File "D:\Users\test\PycharmProjects\pythonProject1\venv\lib\site-packages\win32com\client\genpy.py", line 725, in _Build_Interface
oleItem = DispatchItem(info, attr, doc)
File "D:\Users\test\PycharmProjects\pythonProject1\venv\lib\site-packages\win32com\client\genpy.py", line 274, in __init__
build.DispatchItem.__init__(self, typeinfo, attr, doc)
File "D:\Users\test\PycharmProjects\pythonProject1\venv\lib\site-packages\win32com\client\build.py", line 119, in __init__
self.Build(typeinfo, attr, bForUser)
File "D:\Users\test\PycharmProjects\pythonProject1\venv\lib\site-packages\win32com\client\build.py", line 267, in Build
self._AddFunc_(typeinfo,fdesc,bForUser)
File "D:\Users\test\PycharmProjects\pythonProject1\venv\lib\site-packages\win32com\client\build.py", line 156, in _AddFunc_
assert(fdesc.desckind == pythoncom.DESCKIND_FUNCDESC)
AttributeError: 'PyFUNCDESC' object has no attribute 'desckind' 报错信息不是程序本身的语句,而是excel = win32.gencache.EnsureDispatch('Excel.Application'),我在百度上搜的,这样定义对象没有问题,实在不知道是怎么回事,请教{:5_111:} 哈哈哈 直接改后缀试试 Python初学者8号 发表于 2021-9-26 08:21
哈哈哈 直接改后缀试试
下个06以上Ms office的版本,打开后直接另存就可以了。 heidern0612 发表于 2021-9-26 08:27
下个06以上Ms office的版本,打开后直接另存就可以了。
可不,也行的 ,哈哈哈 import win32com.client as win32
fname = "C:\\Users\\test\\Desktop\\***.xls"
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Application.Quit()
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open(fname)
wb.SaveAs(fname+"x", FileFormat = 51)
wb.Close()
excel.Application.Quit()
这样就行了,你应该是上一次打开,没有关闭好,导致再打开失败
页:
[1]