如何使用python通过子进程与Excel文件通信?

时间:2018-08-17 21:06:17

标签: python excel subprocess office365

如何通过子流程更改Excel文件中的单元格? 到目前为止,我的代码是:

import subprocess
ob =subprocess.Popen(['*Path to excel file*'], shell=True)
ob.communicate('H2=test')

但是,它什么也没做!

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

Excel没有管道通信接口,因此您不能仅使用子流程模块与之通信。

要完成的工作可以使用win32com模块来实现,因为excel具有COM界面:

from win32com.client import Dispatch
excel = Dispatch("Excel.Application")
wb = excel.Workbooks.Append()
range = wb.Sheets[0].Range("A1")
range.Value = 'test'

但是,这并不是与excel的最佳集成。我建议您研究openpyxl,该文件可以让您打开excel文件而不需要excel本身。

答案 1 :(得分:0)

我认为也许您在努力了解子流程模块实际上是做什么的。

在其中使用shell=True参数时,就与打开终端(或Windows中的cmd)并在其中键入该参数一样。

如果您使用的是Windows,请尝试运行subprocess.call('dir', shell=True),然后看看会发生什么。您应该看到显示的当前目录的内容。如果您使用的是Mac / Linux,请运行subprocess.call('ls', shell=True),它应该执行相同的操作。

所以对于您当前的任务,这不是正确的工具。但是,此模块对于其他任务可能非常有用。

个人而言,我喜欢将openpyxl与Pandas结合使用以将Excel工作表读取到DataFrame并在python内部进行操作。熊猫有一个不错的read_excel函数,文档是here