Python win32com“参数数量无效”

2024-02-10

我正在尝试使用 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()and set xl.Visible=True查看工作簿。甚至做wb.Save()但不能做wb.SaveAs()


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

(-2147352567, '发生异常。', (0, 'Microsoft Excel', “抱歉,我们 找不到./input.xlsx。有没有可能是搬家了 重命名还是删除?", 'xlmain11.chm', 0, -2146827284), 无)

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

要解决此问题,请考虑使用Python的内置os提取脚本的当前目录路径并连接os.path.join()在 Excel COM 方法中。另外,下面使用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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python win32com“参数数量无效” 的相关文章

随机推荐

  • 如何使用 SVN 使某些开发人员只显示某些文件夹

    我有一个包含一堆文件夹的存储库 我希望某些开发人员在检出存储库时只能获取其中两个或三个文件夹 如何使文件夹默认不显示 然后仅在我想要授予访问权限时添加它们 我使用 VisualSVN 作为 SVN 服务器 我所做的就是授予对顶层的读取访问权
  • 使用 RPostgreSQL 进行 UTF-8 / Unicode 文本编码

    我在直接链接到 PostgreSQL 数据库的 Windows 计算机上运行 R 我没有使用 RODBC 我的数据库采用 UTF 8 编码 由以下 R 命令确认 dbGetQuery con SHOW CLIENT ENCODING cli
  • 如何获取嵌入Flash影片的URL?

    今天我试图获取我的 Flash 电影所在的 URL I found 这里有一个类似的问题 https stackoverflow com questions 396412 how can my flash app determine its
  • Apache 在 URL 中隐藏查询字符串但保持 URL 正常工作

    我有两种类型的 URL 但它们可以在查询字符串之后包含任何内容 因为我们有 1000 个 URL 帖子 两者都有 id 我希望隐藏 删除它 但页面仍然加载 这些页面是 WordPress 中的自定义 slugs 我没有在 Apache 2
  • 将 boost::array 转换为带参数的函数 (const float (&arr)[12])

    我有一个boost array
  • R 中 PCA 的结果载荷

    在R中进行PCA时 p lt princomp iris 1 4 我通过以下两种方法得出不同Component的系数 IrisLoading lt p loadings 1 2 methods1 use the fist two Comp
  • 在大型数据集上使用 grep 或 fgrep 的循环速度非常慢

    我正在尝试做一些非常简单的事情 grep 从列表中 对目录中的文件进行精确匹配的字符串 try grep each line from the files for i in cat data datafile do LOOK echo i
  • 为什么根窗口小部件与窗口的大小不同?

    我正在尝试使用自定义小部件GridLayout 但结果总是在角落里出现一个很小的网格 而不是在整个窗口中扩展的网格 示例代码 import kivy kivy require 1 5 1 from kivy app import App f
  • 到大端还是小端? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ReactDOM.render 放在 React 中的什么位置

    这里是入门 https facebook github io react docs getting started htmlReact的例子 在例子中 下面的代码片段是单独的main js file ReactDOM render h1 H
  • 从委托访问列表视图 currentIndex

    我有一个QMLListView委托从另一个文件加载其组件的地方 单击委托项目时 我想更新ListView CurrentIndex and highlight所选项目 当我明确设置时它有效id of the ListView 但是因为我想使
  • Scala 2.13 视图与 LazyList

    我正在将一个项目从 Scala 2 12 1 迁移到 2 13 6 并发现SeqView flatMap现在返回一个View 其中没有distinct方法 因此 我有一段代码不再编译 val nodes debts view flatMap
  • 如何以正确的类型安全方式迭代记录键?

    让我们针对一些属性构建一个示例记录 type HumanProp weight height age type Human Record
  • 如何获取光标下的单词?

    假设有一个mousestop事件附加到整个文档 找出确切事件的最佳方法是什么word当鼠标停止移动时 在光标下方 如果有任何文本 我可以从事件处理程序获取底层 jQuery 元素 document elementFromPoint e cl
  • MATLAB:在子图中绘制/保存网格函数的 X-Y 视图

    正如标题所示 我试图将网格函数的 2 变量切片 例如 作为 jpg 保存为子图 我想使用 m 文件来执行此操作 因为我有很多要生成的图 我已经弄清楚如何在他们自己的图形上绘制视图 但我无法让它们正确地绘制为图形中的子图 为了说明我的意思 以
  • 绘制包含 80% (x, y) 点的圆

    我有一个二维数组 x y 的点 我想绘制一个包含该点 80 的圆 并且我想知道所得圆的半径 有没有办法用 python 来做到这一点 我一直在寻找一种方法来做到这一点 但没有成功 我很抱歉没有尝试 但我完全迷失了在不给圆半径的情况下取 80
  • 进程何时处理信号

    我想知道linux进程什么时候处理信号 假设进程已经安装了信号的信号处理程序 我想知道进程的正常执行流程何时会被中断并调用信号处理程序 根据http www tldp org LDP tlk ipc ipc html http www tl
  • 访问实例变量的语法? (目标-C)

    在 Objective C 中访问实例变量的正确语法是什么 假设我们有这个变量 interface thisInterface UIViewController NSMutableString aString property nonato
  • 与D3的关系图

    如何使用 D3 创建以下图表 我不知道这种类型的可视化的名称 我能找到的最接近的是 力导向 图 图例 填充的节点是人 非填充的节点是属性 例如最喜欢的颜色 这是我的版本 http jsfiddle net doraeimo JEcdS em
  • Python win32com“参数数量无效”

    我正在尝试使用 win32com 使用以下代码将多个 xlsx 文件转换为 xls import win32com client f r input xlsx xl win32com client gencache EnsureDispat