使用Python访问COM对象中的UpdateLink()
我正致力于自动化一个链接到某些.csv文件的Excel文件。 这些.csv文件是根据每季度运行的SAS代码创建的。 创建的文件会相应地加上时间戳,例如XYZ_201603.csv和XYZ_201606.csv等 我需要更新我的Excel文件上的链接,以便它从下一季度开始自动更改到该文件的链接。我正在尝试使用Python win32com.client来实现这一点,我的代码如下所示使用Python访问COM对象中的UpdateLink(),python,excel,csv,Python,Excel,Csv,我正致力于自动化一个链接到某些.csv文件的Excel文件。 这些.csv文件是根据每季度运行的SAS代码创建的。 创建的文件会相应地加上时间戳,例如XYZ_201603.csv和XYZ_201606.csv等 我需要更新我的Excel文件上的链接,以便它从下一季度开始自动更改到该文件的链接。我正在尝试使用Python win32com.client来实现这一点,我的代码如下所示 from win32com import Dispatch xl_app = Dispatch("Excel.App
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)
谁能告诉我这里出了什么问题。另外,如果我有多个链接,我如何判断哪个链接需要更改为什么?我可以传递更新数据集目录的字典吗
代码和方法取自这个关于堆栈溢出的答案
如果查看,似乎可以在不使用任何参数的情况下调用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()
如果查看,似乎可以调用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()
很高兴看到我的答案被引用!根据,链接源应为MS Excel链接。考虑将CSV数据导入工作簿或将CSV数据保存为Excel电子表格。记住CSV是文本文件。我试着这么做,但我得到了同样的错误!!很高兴看到我的答案被引用!根据,链接源应为MS Excel链接。考虑将CSV数据导入工作簿或将CSV数据保存为Excel电子表格。记住CSV是文本文件。我试着这么做,但我得到了同样的错误!!