python - Excel 与 Python 交互

标签 python excel

<分区>

您见过哪些用于将数据传入和传出 MS-Excel 的工具?

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

背景:

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

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

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

所以问题是:

  1. 你看到了什么?
  2. 有哪些工具?
  3. 您发现了哪些陷阱和陷阱?

我们越多地使用 Excel 和 VBA 并在服务器上运行,我就会越开心。我正在查看的很多 VBA 代码和基于单元格的公式逻辑应该在几年前就已经退休了,并且在脆弱的桌面工具中运行它具有明显的操作风险。

请注意,我们比“在这里,让我打开一个新的 Excel 工作表,粘贴并格式化一些数据,然后保存文件”更进一步 - 我们需要与现有 Excel 进行交互工作表,在 Excel.exe 的现有 session 中打开并运行。

最佳答案

在我看来,您正在使用 pywin32 库直接使用 Excel 组件对象模型。走这条路,您将可以通过 python 访问所有 excel 函数。看看Excel的COM接口(interface)引用:

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

您首先需要安装 pywin32 library .然后让自己熟悉来自 python 的 COM 交互。这是来自 Python Programming on Win32 的一章这应该可以帮助您入门。

使用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 时,您需要注意正确关闭 excel 对象。如果您的程序在正确调用 excel.Quit() 之前崩溃或退出(在某些情况下我发现我必须显式调用 del excel),那么您将结束让 EXCEL.exe 进程在后台运行。

关于python - Excel 与 Python 交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21785833/

相关文章:

python - Twisted/Amp 网络 : Respond to all clients, 不仅仅是一个发出请求的人

vba - 打开并读取一个文本文件,然后复制带有分隔符的文件内容

arrays - 在 VBA 中定义数组设置步长值

excel - VBA WinHTTP从受密码保护的https网站下载文件

python - Py 安装程序 "ImportError: No module named Pyinstaller"

python:创建一个不规则的迭代器

excel - SUMIF 值大于上一列中的值

python - 使用 python 使用 excel 时出错

python - pickle 后日期时间戳是否更新?

Python 将 string 类型转换为 int 失败