Excel与Python交互

Nig*_*nan 2 python excel

您在将数据传入和传出MS-Excel时看到了哪些工具?

这些是关于工具选择和在线提供的好技术文章的建议请求.这不是关于wxpython中命名方法和对象的问题.

背景:

我有工作或退休或安乐死一堆用户开发的Microsoft Excel应用程序,最终状态是数据存储和检索以及数据处理将全部驻留在我们公司的服务器上并在现有公司上运行全面的Python应用程序平台.

其中一些Excel工作簿将继续存在,通过Python应用程序从我们的服务器调用数据 - 这看起来很像现有Excel加载项的屏幕和菜单 - 而且Excel仍将用于任何本地数据 - 用户的noodling选择做.但是在我们的服务器上,繁重的工作正在转向python,我们拥有庞大的python对象和工具代码库.

我们可以自由地设计工具和接口来完成所有这些工作.

所以问题是:

  1. 你看到了什么?
  2. 那里有什么工具?
  3. 你发现了什么陷阱和失误?

我们越拿出Excel和VBA并在服务器上运行,我就越幸福.我所看到的很多VBA代码和基于单元的公式逻辑应该在几年前已经退役,并且在脆弱的桌面工具中运行它具有明显的操作风险.

请注意,我们要比'这里,让我打开一个新的Excel工作表,粘贴和格式化一些数据,并保存文件'更进一步 - 我们需要与现有的Excel工作表交互,在现有的Excel会话中打开和运行.可执行程序.

Bri*_*ker 5

听起来像你正在使用pywin32库直接使用Excel组件对象模型.走这条路,您将可以通过python访问所有excel函数.看一下Excel的COM接口参考:

http://msdn.microsoft.com/en-us/library/office/ee861528.aspx

您首先需要安装pywin32库.然后让自己熟悉python中的COM交互.这是Win32Python编程的一章,可以帮助您入门.

使用pywin32控制Excel的基本介绍:

from win32com.client import Dispatch

>>> excel = Dispatch('Excel.Application') # get a handle to the Excel COM object
>>> workbook = excel.Workbooks.Open('absolute\\path\\to\\workbook.xlsm') # open an existing excel workbook
>>> worksheet = workbook.Worksheets('Sheet1') # get the worksheet called "Sheet1"
>>> r = worksheet.Range('A1:A5')
>>> print r.Value
((u'Value of A1',), (u'Value of A2',), (u'Value of A3',), (u'Value of A4',), (u'Value of A5',))
>>>
>>> r.Value = range(5)
>>> print r.Value
((0.0,), (1.0,), (2.0,), (3.0,), (4.0,))
>>>
>>> workbook.Close()
>>> excel.Quit()
Run Code Online (Sandbox Code Playgroud)

您可以使用COM对象控制Excel的任何方面.如果您第一次运行excel.Visible = 1,您可以实时观察所有更改.

但是,在使用此API时,需要小心正确关闭excel对象.如果您的程序在正确调用之前崩溃或退出excel.Quit()(在某些情况下我发现我必须明确调用del excel),那么您最终将在后台运行EXCEL.exe进程.