gpt4 book ai didi

Python win32com 'Invalid number of parameters'

转载 作者:行者123 更新时间:2023-12-01 03:30:27 25 4
gpt4 key购买 nike

我尝试使用 win32com 将多个 xlsx 文件转换为 xls,代码如下:

import win32com.client

f = r"./input.xlsx"
xl = win32com.client.gencache.EnsureDispatch('Excel.Application')
wb = xl.Workbooks.Open(f)
xl.ActiveWorkbook.SaveAs("./somefile.xls", FileFormat=56)

由于以下错误而失败:

Traceback (most recent call last):
File "xlsx_conv.py", line 6, in <module>
xl.ActiveWorkbook.SaveAs("./somefile.xls", FileFormat=56)
File "C:\python27\lib\site-packages\win32com\gen_py\00020813-0000-0000-C000-000000000046x0x1x9.py", line 46413, in SaveAs
, Local, WorkIdentity)
pywintypes.com_error: (-2147352562, 'Invalid number of parameters.', None, None)

更多细节:

我可以对工作簿执行其他命令,即 wb.Worksheets.Add() 并设置 xl.Visible=True 来查看工作簿。甚至可以执行 wb.Save() 但无法执行 wb.SaveAs()

最佳答案

COM 异常是由于缺少文件名参数造成的,因为找不到 f = r"./input.xlsx"。如果您使用 Excel 2013+,您会收到更精确的异常消息,其中错误代码略有不同:

(-2147352567, 'Exception occurred.', (0, 'Microsoft Excel', "Sorry, we couldn't find ./input.xlsx. Is it possible it was moved, renamed or deleted?", 'xlmain11.chm', 0, -2146827284), None)

虽然您的路径确实在 Python 的 native 上下文中工作,指向被调用的 .py 脚本所在的目录,但它在与外部 API(如 Windows COM)的接口(interface)中不起作用,因为需要完整路径。

要解决这个问题,请考虑使用 Python 内置的 os 来提取脚本的当前目录路径,并与 Excel COM 方法中的 os.path.join() 相连接。另外,下面使用 try/except/finally 在后台正确结束 Excel.exe 进程,无论是否引发异常。

import os
import win32com.client as win32

cd = os.path.dirname(os.path.abspath(__file__))

try:
f = os.path.join(cd, "input.xlsx")
xl = win32.gencache.EnsureDispatch('Excel.Application')
wb = xl.Workbooks.Open(f)
xl.ActiveWorkbook.SaveAs(os.path.join(cd, "input.xls"), FileFormat=56)
wb.Close(True)

except Exception as e:
print(e)

finally:
wb = None
xl = None

关于Python win32com 'Invalid number of parameters',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40995672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com