首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从python调用excel外接程序

如何从python调用excel外接程序
EN

Stack Overflow用户
提问于 2016-04-07 16:20:38
回答 2查看 7K关注 0票数 8

有没有从python调用Excel外接程序的方法?在我的公司有几个excel外接程序是可用的,它们通常提供对某些数据库的直接访问并进行额外的计算。

从python直接调用这些函数的最佳方法是什么?

澄清一下,我对从excel访问python不感兴趣。我对从python访问excel-addins感兴趣。

EN

回答 2

Stack Overflow用户

发布于 2020-07-09 14:23:10

至少有三种可能的方法来调用Excel外接程序,直接或通过自动化调用COM外接程序。

微软为其Excel (https://learn.microsoft.com/en-us/dotnet/api/microsoft.office.interop.excel)提供在线文档。虽然是针对.NET的,但它强调了主要的局限性。不能直接调用自定义带(其中包含外接程序)。这是为了保护一个外接程序不受另一个.(虽然可以安装/卸载外接程序)。

COM外接程序您可以直接使用win32com.client调用COM外接程序。但是,您只能运行对COM可见的方法。这意味着您可能必须修改外接程序。请参阅C#教程https://learn.microsoft.com/en-us/visualstudio/vsto/walkthrough-calling-code-in-a-vsto-add-in-from-vba?view=vs-2019

一旦公开了该方法,就可以使用win32com.client在Python中调用它。例如:

代码语言:javascript
复制
import win32com.client as win32

def excel():
    # This may error if Excel is open.
    return win32.gencache.EnsureDispatch('Excel.Application')

xl = excel()
helloWorldAddIn = xl.COMAddIns("HelloWorld") # HelloWorld is the name of my AddIn.
#app = helloWorldAddIn.Application 
obj = helloWorldAddIn.Object # Note: This will be None (null) if add-in doesn't expose anything.
obj.processData() # processData is the name of my method

如果您能够将您的外接程序上传到Office365个帐户,则网络会刮除。然后,您可以使用Selenium之类的包预先生成web抓取。我没试过。此外,您很可能会遇到调用外部资源的问题,比如连接字符串& http调用。

自动化您可以使用自动化包运行外接程序。例如,吡咯烷酮。您可以编写代码来控制鼠标和键盘,以模拟用户运行外接程序。这个解决方案意味着您不需要更新现有的外接程序。

通过自动化调用外接程序的一个非常基本的示例:

代码语言:javascript
复制
import os
import pyautogui
import time

def openFile():    
    path = "C:/Dev/test.xlsx"
    path = os.path.realpath(path)
    os.startfile(path)
    time.sleep(1)

def fullScreen():    
    pyautogui.hotkey('win', 'up')
    time.sleep(1)

def findAndClickRibbon():    
    pyautogui.moveTo(550, 50)
    pyautogui.click()
    time.sleep(1)

def runAddIn():    
    pyautogui.moveTo(15, 100)
    pyautogui.click()
    time.sleep(1)

def saveFile():    
    pyautogui.hotkey('ctrl', 's')
    time.sleep(1)

def closeFile():    
    pyautogui.hotkey('alt', 'f4')
    time.sleep(1)

openFile()
fullScreen()
findAndClickRibbon()
runAddIn()
saveFile()
closeFile()
票数 7
EN

Stack Overflow用户

发布于 2016-04-07 16:30:31

链接列出了一些可用于处理Excel和Excel文件的包。你可以在那里找到你的问题的答案。

概括地说,以下是列出的一些软件包的名称:

  1. openpyxl -读取/写入Excel 2007 xlsx/xlsm文件
  2. xlrd -在任何平台上从Excel电子表格(.xls和.xlsx,Version2.0)中提取数据
  3. 用Excel 2007+ XLSX文件格式编写文件
  4. xlwt -生成与Excel97/2000/XP/2003、OpenOffice.org Calc和G数值兼容的电子表格文件。

尤其是这对你来说可能很有趣

ExPy - ExPy是免费提供的演示软件,安装起来很简单.一旦安装,Excel用户就可以访问内置的Excel函数,这些函数可以包装Python代码.该网站提供了文件和例子。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36481891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档