从Python访问Microsoft自动化对象
我有一组宏,已在excel中转换为外接程序。宏允许我与另一个程序进行交互,该程序具有所谓的Microsoft Automation对象,可以对另一个程序的操作进行控制。例如,我在外接程序中有一个筛选工具,用于筛选其他程序提供的列表,以匹配Excel工作簿中的列表。但这很慢。我可能在另一个程序中有五万行,并且希望筛选出与Excel中三千行列表不匹配的所有行。这种类型的匹配大约需要30-40分钟。我开始怀疑是否有办法用Python来实现这一点,因为我怀疑匹配过程可以在几秒钟内完成 编辑: 谢谢-根据看哈蒙德的书的建议,我找到了一些参考资料。然而,尽管我仍在探索,但看起来其中许多都是旧的。例如,哈蒙德的书是2000年出版的,这意味着这本书差不多十年前就写完了。更正我刚刚发现了一个名为PyWin32的包,它的版本是2/2009从Python访问Microsoft自动化对象,python,object,automation,Python,Object,Automation,我有一组宏,已在excel中转换为外接程序。宏允许我与另一个程序进行交互,该程序具有所谓的Microsoft Automation对象,可以对另一个程序的操作进行控制。例如,我在外接程序中有一个筛选工具,用于筛选其他程序提供的列表,以匹配Excel工作簿中的列表。但这很慢。我可能在另一个程序中有五万行,并且希望筛选出与Excel中三千行列表不匹配的所有行。这种类型的匹配大约需要30-40分钟。我开始怀疑是否有办法用Python来实现这一点,因为我怀疑匹配过程可以在几秒钟内完成 编辑: 谢谢-根据
这应该让我开始。感谢Mark Hammond和Andy Robinson写的关于从Python访问Windows COM对象的文章
是一个使用Excel的示例。据我所知,可以在Windows上用Python创建COM对象(这就是自动化对象)。然后假设您可以通过自动化获得列表,那么在python中做您想要的事情应该很容易 然而,尽管我仍在探索,但看起来其中许多都是旧的 COM是旧的。至少从1993年起,这个界面就没有改变过 我在Python.org网站上也没有看到这个包。我搜索了COM包,但没有看到任何有用的东西
最新更新是2009年2月,其中包括Python 3.0支持。您可能需要win32com软件包 这是我在中找到的一个示例,它显示了如何将com与Excel结合使用。这可能是一个好的开始
# this example starts Excel, creates a new workbook,
# puts some text in the first and second cell
# closes the workbook without saving the changes
# and closes Excel. This happens really fast, so
# you may want to comment out some lines and add them
# back in one at a time ... or do the commands interactively
from win32com.client import Dispatch
xlApp = Dispatch("Excel.Application")
xlApp.Visible = 1
xlApp.Workbooks.Add()
xlApp.ActiveSheet.Cells(1,1).Value = 'Python Rules!'
xlApp.ActiveWorkbook.ActiveSheet.Cells(1,2).Value = 'Python Rules 2!'
xlApp.ActiveWorkbook.Close(SaveChanges=0) # see note 1
xlApp.Quit()
xlApp.Visible = 0 # see note 2
del xlApp
# raw_input("press Enter ...")
哈蒙德先生刚刚在Excel stuff上发布了他的“Python for Windows Extensions”的新版本,您可能会发现xlrd和xlwt库也很有用。你可以在PyPI中找到它们:谢谢,@AndyW。固定的。