Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python访问COM对象中的UpdateLink()_Python_Excel_Csv - Fatal编程技术网

使用Python访问COM对象中的UpdateLink()

使用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

我正致力于自动化一个链接到某些.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)
谁能告诉我这里出了什么问题。另外,如果我有多个链接,我如何判断哪个链接需要更改为什么?我可以传递更新数据集目录的字典吗

代码和方法取自这个关于堆栈溢出的答案

如果查看,似乎可以在不使用任何参数的情况下调用
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是文本文件。我试着这么做,但我得到了同样的错误!!