在Windows中从Python驱动Excel

我们有各种电子表格,使用美味复杂的macros和第三方扩展来生成复杂的模型。 我正在开发一个项目,涉及到稍微调整各种input并查看结果。 而不是手工或编写VBA,我想看看我是否可以写一个Python脚本来驱动这个。 换句话说,python脚本将启动,加载excel表单,然后通过在一些单元格中进行细微更改并查看它们如何影响其他单元格来与表单交互。

所以,我的问题是双重的:

  • 什么是最好的图书馆来驱动从Python这样的方式的Excel?

  • 哪里是最好的文档/使用上述图书馆的例子?

欢呼声,/ YGA

为了控制Excel,像@igowenbuild议的那样使用pywin32。

请注意,可以使用静态分派。 使用pywin32项目中的makepy.py来用python包装器创build一个python模块。 使用生成的包装器简化了开发,因为例如ipython在开发过程中为你提供了制表符完成和帮助。

静态调度示例:

 x:> makepy.py“Microsoft Excel 11.0 Object Library”
 ...
生成...
导入模块
 x:> ipython
 > from win32com.client import Dispatch > excel = Dispatch("Excel.Application") > wb = excel.Workbooks.Append() > range = wb.Sheets[0].Range("A1") > range.[Press Tab] range.Activate range.Merge range.AddComment range.NavigateArrow range.AdvancedFilter range.NoteText ... range.GetOffset range.__repr__ range.GetResize range.__setattr__ range.GetValue range.__str__ range.Get_Default range.__unicode__ range.GoalSeek range._get_good_object_ range.Group range._get_good_single_object_ range.Insert range._oleobj_ range.InsertIndent range._prop_map_get_ range.Item range._prop_map_put_ range.Justify range.coclass_clsid range.ListNames range.__class__ > range.Value = 32 ... 

文档链接:

  • O'Reilly的书“Win32上的Python编程”有一个与Excel集成的章节。
  • 相同的书,免费样章高级Python和COM详细介绍了makepy。
  • 教程
  • win32com文档 ,我build议你先阅读这个 。

我已经通过使用pywin32 。 这不是一个特别愉快的经历,因为没有真正的抽象。 这就像使用VBA,但使用Python语法。 你不能依靠docstrings,所以你会希望有MSDN的Excel引用得心应手( http://msdn.microsoft.com/en-us/library/aa220733.aspx是我用的,如果我没有记错的话。你应该能够findExcel 2007文档,如果你挖了一下。)。

这里看一个简单的例子。

 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 

祝你好运!

查看DataNitro项目(以前的名字IronSpread)。 它是Excel的Python插件。

我写的python类,允许通过Windows中的COM接口使用Excel http://sourceforge.net/projects/excelcomforpython/

该类使用win32com与Excel进行交互。 您可以直接使用类或使用它作为示例。 许多选项的实现像数组公式,条件格式,图表等

去年,我在一个家庭项目上工作,涉及到一个用Python Excel插件编写的客户端。 该项目本质上是为最终用户访问而简化的在线数据库。 Excel插件允许用户从数据库中查询数据以显示在Excel中。

我从来没有与Excel插件很远,我的代码有点难看。 但是,我所拥有的是BSD许可证下可通过Bazaar

http://www.launchpad.net/analyz/trunk

客户端将无法工作,因为我现在没有公共服务器运行,但至less你可以看看我对代码做了什么,以得到一些想法如何工作。 该代码还将向您展示如何以100%的Python构buildMFC对话框。

我花了大约一个星期,这里是我的实现(或者更确切地说是概念validation): https : //github.com/Winand/SimplePython

主要思想是使Python代码很容易从Microsoft Office编写和调用VBAmacros(我只为Excel创build了插件)。

  • 客户端 – 服务器架构(通过TCP),所以Python只启动一次
  • 如果服务器没有运行,服务器将自动启动
  • 服务器自动重新加载macros模块,当用户改变他们
  • Officefunction区上易于使用的控制界面

有一个有趣的项目将python集成到excel中,作为一个进程内DLL,

http://opentradingsystem.com/PythonForExcel/main.html

另一个更简单的项目沿着同样的想法存在于:

http://www.codeproject.com/Articles/639887/Calling-Python-code-from-Excel-with-ExcelPython

这些项目似乎有很多的承诺,但需要更多的发展。