我们有各种电子表格,采用美味复杂的宏和第三方扩展来生成复杂的模型.我正在开展一个涉及稍微调整各种输入并查看结果的项目.我不想亲手或写VBA,而是想看看我是否可以编写一个python脚本来驱动它.换句话说,python脚本将启动,加载Excel工作表,然后通过在某些单元格中进行微小更改并查看它们如何影响其他单元格来与工作表进行交互.
所以,我的问题是双重的:
什么是用这种方式从python中驱动excel的最好的库?
使用该库的最佳文档/示例在哪里?
干杯,/ YGA
要控制Excel,请使用pywin32,就像@igowen建议的那样.
请注意,可以使用静态分派.使用makepy.py
pywin32项目创建一个包含python包装器的python模块.使用生成的包装器简化了开发,因为例如ipython可以在开发期间为您提供选项卡完成和帮助.
静态调度示例:
x:> makepy.py "Microsoft Excel 11.0 Object Library" ... Generating... Importing module 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文档,我建议你阅读这第一次.
我已经通过使用pywin32完成了这个.这不是一个特别愉快的经历,因为它没有任何抽象; 它就像使用VBA,但使用python语法.您不能依赖于文档字符串,因此您需要方便地使用MSDN Excel参考(http://msdn.microsoft.com/en-us/library/aa220733.aspx是我使用过的,如果我没记错的话.如果你稍微挖掘一下,你应该能够找到Excel 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插件.