Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.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中使用win32com加载Excel加载项_Python_Excel_Win32com - Fatal编程技术网

从Python中使用win32com加载Excel加载项

从Python中使用win32com加载Excel加载项,python,excel,win32com,Python,Excel,Win32com,我从这里的各种问题中了解到,如果使用以下方法从Python打开Excel实例: xl = win32com.client.gencache.EnsureDispatch('Excel.Application') xl.Visible = True wb = xl.Workbooks.Open('Test.xlsx') 然后它不会加载默认加载项。我已尝试通过运行以下命令来强制加载外接程序: xl = win32com.client.gencache.EnsureDispatch('Excel.A

我从这里的各种问题中了解到,如果使用以下方法从Python打开Excel实例:

xl = win32com.client.gencache.EnsureDispatch('Excel.Application')
xl.Visible = True
wb = xl.Workbooks.Open('Test.xlsx')
然后它不会加载默认加载项。我已尝试通过运行以下命令来强制加载外接程序:

xl = win32com.client.gencache.EnsureDispatch('Excel.Application')
xl.Visible = True
addin = xl.Workbooks.Open('C:/path/addIn.xll')
wb = xl.Workbooks.Open('Test.xlsx')
但是,当我执行此操作时,会打开一个Excel实例,并收到一条安全消息,要求我验证是否要打开此加载项。如果单击“仅为此会话启用此加载项”,Excel将立即关闭,并且不会打开所需的xlsx文件

有人知道如何强制加载外接程序,然后允许我打开文件吗


非常感谢你的帮助

我通过win32com使用Excel比其他任何方法都成功得多,但是您可能想看看pyxll()。以下是一些其他事项:

  • 您是否检查了
    addin.Installed==True
  • 您是否尝试过加载项.Add(“c:\windows\AddIns\TSXL\TSXL.xll”)。Installed=True
  • 在打开工作簿之前,请尝试
    xl.DisplayAlerts=False
  • 您是否尝试过的最后一个答案中的四个步骤,我将它们复制到这里:

  • 打开XL/XLL文件,表示问题< /LI>中的AdIn
  • 设置加载项(加载项名称)。已安装=False
  • 加载项(加载项名称).Add(加载项文件路径)
  • 设置加载项(加载项名称)。已安装=True

我实际上已经设法解决了这个问题,从这篇MSDN文章中借用了一些关于使用VBA执行相同操作的内容:

现在,以下各项可以很好地发挥作用:

xl = win32com.client.gencache.EnsureDispatch('Excel.Application')
xl.Visible = True
xl.RegisterXLL('C:/path/addin.xll')
wb = xl.Workbooks.Open('Test.xlsx')

我遇到了同样的问题,但是不能从接受的答案中使用<代码> xl RegisterXLL('c:/puts/Addi.xLa),因为它只与.xLL文件一起工作,并且我有.xLA文件。

相反,我发现这是有效的:

xl = win32com.client.gencache.EnsureDispatch('Excel.Application')

# Need to load the addins before opening the workbook
addin_path = r'C:\path\addin.xla'
xl.Workbooks.Open(addin_path)
xl.AddIns.Add(addin_path).Installed = True

wb = xl.Workbooks.Open(r"C:\my_workbook.xlsm")

您需要与Excel交互还是只需读取电子表格数据?如果是后者,那么就有一些例程(甚至可以在Unix上工作!)可以用来从电子表格中读取数据(xlrd、python excel等。我需要用python进行一些计算,将结果传递到excel,然后能够使用excel外接程序提供的函数对这些结果进行操作。我很清楚这可能不是一个理想的设置,但我只是在帮助完成一个小项目,实际上无法指定它们的设置方式一切就绪!嗨。我还有一些xll Excel外接程序,我希望能够在Python中加载和使用。你找到方法了吗?你能分享你的解决方案吗?谢谢我下面的答案对你不起作用吗?谢谢你的回复Scholli!@Ben Np。我很想知道你是否尝试过上述任何一种方法。我没有机会(在发布问题和查看您的回复之间,我偶然发现了另一种解决方案)。如果我有时间,我将调查他们是否也解决了问题。很高兴您找到了答案并发布了它。这很有趣,因为我遇到了RegisterLL(虽然不是您引用的特定页面,但很好)但这是一个我没有足够的信息来确定它是否相关的选项。