Excel与Python交互

你有什么工具将数据传入和传出MS-Excel?

这是一个关于select工具的build议,以及在线提供的好的技术文章。 这不是关于wxpython中的命名方法和对象的问题。

背景:

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

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

我们可以自由地devise工具和界面来完成这一切。

所以问题是:

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

我们从Excel和VBA中取出的越多,在服务器上运行,我就越快乐。 我所看到的很多VBA代码和基于单元格的公式逻辑应该早在几年前就已经退休了,并且在一个脆弱的桌面工具中运行它具有明显的操作风险。

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

听起来像你以后直接与Excel组件对象模型,使用pywin32库。 走这条路,你将可以通过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() 

你可以使用COM对象来控制excel的任何方面。 如果你第一次运行excel.Visible = 1 ,你可以实时观察所有的变化。

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

我已经做了很less的工作与Excel / Python交互 – 只有非常基本的东西。 我唯一使用的工具是xlrd 。 但是,快速谷歌search出现了其他几个选项,如

  • xlwt – 与xlrd有关,不完整的文档
  • xlutils – 与xlrd / xlwt相关
  • DataNitro – 不是免费的
  • XlsxWriter – 无法修改现有文件
  • Pyxll – Enthought的许多有用的软件包之一

不知道更多关于你的具体需求,我不能告诉你哪个对你最好,但我喜欢使用xlrd为我自己有限的目的。

我希望这是至less有足够的信息来启动你。

那么我做了什么(将Excel电子表格集合中的数据转换成SQL后端)比你以前的function简单得多,但是xlrd是一个真正的gem。 它可以让你浏览Excel电子表格,并在Python中很自然地处理他们的数据。 我已经使用了许多蹩脚和痛苦的API,而xlrd不是其中之一。 我还没有使用它的Excel写作伴侣xlwt,但基于我对xlrd的经验,我寄予厚望。

http://www.python-excel.org