当前位置:  开发笔记 > 编程语言 > 正文

在Windows中从Python驱动Excel

如何解决《在Windows中从Python驱动Excel》经验,为你挑选了3个好方法。

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

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

什么是用这种方式从python中驱动excel的最好的库?

使用该库的最佳文档/示例在哪里?

干杯,/ YGA



1> codeape..:

要控制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
...

文档链接:

O'Reilly的书籍Win32上的Python编程有一个与Excel集成的章节.

同一本书,免费样本章节高级Python和COM详细介绍了makepy.

教程

win32com文档,我建议你阅读这第一次.



2> 小智..:

我已经通过使用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

祝好运!


查看我在http://xlwings.org上的新项目,该项目将此方法包装到一个简单的Pythonic界面中,并提供通过Excel调用它的可能性.

3> codeape..:

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

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有