【问题标题】:Accessing UpdateLinks() in COM Object using Python使用 Python 访问 COM 对象中的 UpdateLinks()
【发布时间】:2017-09-26 19:52:16
【问题描述】:

我正在自动化链接到某些 .csv 文件的 Excel 文件。 这些 .csv 文件是从每季度运行的 SAS 代码创建的。 创建的文件有相应的时间戳,例如 XYZ_201603.csv 和 XYZ_201606.csv 等等。

我需要更新我的 Excel 文件上的链接,以便它自动更改下个季度的文件链接。我正在尝试使用 Python win32com.client 执行此操作,我的代码看起来像

from win32com import Dispatch
xl_app = Dispatch("Excel.Application")
xl_app.Visible = True
xl_app.DisplayAlerts = False
wb = xl_app.workbooks.open(r"C:\Users\XYZ\Desktop\Test\Summary.xlsx")
xl_app.AskToUpdateLinks = False

try:
    wb.UpdateLink(Name=r"C:\Users\XYZ\Desktop\Test\XYZ_201606.csv")

except Exception as e:
    print(e)

finally:
   wb.Close(True)
   wb = None

return True

xl_app.Quit()
xl = None

每当我运行它时,我都会收到以下错误

(-2147352567,'Exception occured.',(0,'Microsoft Excel','UpdateLink method of
Workbook class failed','xlmain11.chm',0,-2146827284),None)

谁能告诉我这里出了什么问题。另外,如果我有多个链接,我如何判断哪个链接需要更改为什么?我可以传递更新数据集目录的字典吗

代码和方法取自 Stack Overflow 上的这个答案

Update Links in for Excel Spreadsheet Using Python

【问题讨论】:

  • 看到我的回答被引用很有趣!根据docs,链接源应该是 MS Excel 链接。考虑将 csv 数据导入工作簿或将 csv 数据保存为 Excel 电子表格。记住 csvs 是文本文件。
  • 嗨冻糕。我试过这样做,但我得到了同样的错误!

标签: python excel csv


【解决方案1】:

如果你查看Microsoft Documentation,似乎UpdateLink方法可以在没有任何参数的情况下调用。因此这个程序应该可以工作:

import win32com.client as win32
xl_app = win32.gencache.EnsureDispatch("Excel.Application")
xl_app.Visible       = True
xl_app.DisplayAlerts = False
wb = xl_app.workbooks.open(r"C:\Users\XYZ\Desktop\Test\Summary.xlsx")

wb.UpdateLink()
wb.Save()
wb.Close()
xl_app.Quit()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 2021-03-20
    • 1970-01-01
    • 2014-01-06
    • 2010-12-11
    • 2011-06-28
    • 2013-01-14
    相关资源
    最近更新 更多