鱼C论坛

 找回密码
 立即注册
查看: 4926|回复: 3

怎么使用win32com.client打开一个已经存在的excel文件呢

[复制链接]
发表于 2017-12-7 18:50:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个是从python programming on win32上的例子:
>>> from win32com.client import Dispatch
>>> import pythoncom
>>> def OpenExcelSheet(filename):
… try:
… xl = Dispatch("Excel.Application")
… xl.Workbooks.Open(filename)
但是我使用的时候打不开已经存在的excel文件,这是为什么呢?
>>> import win32com.client as win32
>>> x1=win32.Dispatch("Excel.Application")
>>> x1.Workbooks.Open(r"123456.xlsx")

Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    x1.Workbooks.Open(r"123456.xlsx")
  File "D:\Python25\lib\site-packages\win32com\gen_py\00020813-0000-0000-C000-000000000046x0x1x6\Workbooks.py", line 78, in Open
    , Converter, AddToMru, Local, CorruptLoad)
com_error: (-2147352567, '\xb7\xa2\xc9\xfa\xd2\xe2\xcd\xe2\xa1\xa3', (0, u'Microsoft Office Excel', u'\u627e\u4e0d\u5230\u201c123456.xlsx\u201d\u3002\u8bf7\u68c0\u67e5\u6587\u4ef6\u540d\u7684\u62fc\u5199\uff0c\u5e76\u9a8c\u8bc1\u6587\u4ef6\u4f4d\u7f6e\u662f\u5426\u6b63\u786e\u3002\n\n\u5982\u679c\u60a8\u6b63\u8bd5\u56fe\u4ece\u6700\u8fd1\u4f7f\u7528\u7684\u6587\u4ef6\u5217\u8868\u4e2d\u6253\u5f00\u8be5\u6587\u4ef6\uff0c\u8bf7\u786e\u4fdd\u8be5\u6587\u4ef6\u672a\u88ab\u91cd\u547d\u540d\u3001\u79fb\u52a8\u6216\u5220\u9664\u3002', u'C:\\Program Files\\Microsoft Office\\Office12\\2052\\XLMAIN11.CHM', 0, -2146827284), None)
>>>
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-12-8 11:51:08 | 显示全部楼层
试试xls。不用xlsx。  
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-10 17:22:22 | 显示全部楼层
康小泡 发表于 2017-12-8 11:51
试试xls。不用xlsx。

发现了,原因应该是win32com.client.Dispatch('Excel.Application').Workbooks.Open(filename),折个fiilename应该是绝度路径才对,如果与py文件在同一个文件夹下,需要使用os.path.abspath('123456.xlsx')才可以
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-11 07:39:13 | 显示全部楼层
zhou666666he 发表于 2017-12-10 17:22
发现了,原因应该是win32com.client.Dispatch('Excel.Application').Workbooks.Open(filename),折个fiil ...
  1. import os
  2. import win32com.client as win32
  3. address = address = os.getcwd()

  4. fname = address + "\\Bundles.xls"
  5. fname2 = address + "\\searchresults.xls"
  6. excel = win32.gencache.EnsureDispatch('Excel.Application')
  7. excel2 = win32.gencache.EnsureDispatch('Excel.Application')
  8. wb = excel.Workbooks.Open(fname)
  9. wb5 = excel.Workbooks.Open(fname2)

  10. wb.SaveAs(fname+"x", FileFormat = 51)
  11. wb5.SaveAs(fname2+"x", FileFormat = 51)    #FileFormat = 51 is for .xlsx extension
  12. wb.Close()
  13. wb5.Close()                               #FileFormat = 56 is for .xls extension
  14. excel.Application.Quit()
  15. excel2.Application.Quit()
  16. print('File .xls convert .xlsx successful!!')
复制代码

大佬,这是我的代码,现在也遇到问题了
这是错误提示:
ImportError: DLL load failed: The specified procedure could not be found.
应该怎么修改呀?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-26 12:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表