YGA*_*YGA 42 python excel scripting
我们有各种电子表格,采用美味复杂的宏和第三方扩展来生成复杂的模型.我正在开展一个涉及稍微调整各种输入并查看结果的项目.我不想亲手或写VBA,而是想看看我是否可以编写一个python脚本来驱动它.换句话说,python脚本将启动,加载Excel工作表,然后通过在某些单元格中进行微小更改并查看它们如何影响其他单元格来与工作表进行交互.
所以,我的问题是双重的:
什么是用这种方式从python中驱动excel的最好的库?
使用该库的最佳文档/示例在哪里?
干杯,/ YGA
cod*_*ape 46
要控制Excel,请使用pywin32,就像@igowen建议的那样.
请注意,可以使用静态分派.使用makepy.pypywin32项目创建一个包含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
...
Run Code Online (Sandbox Code Playgroud)
文档链接:
小智 21
我已经通过使用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
Run Code Online (Sandbox Code Playgroud)
祝好运!