如何通过子流程更改Excel文件中的单元格? 到目前为止,我的代码是:
import subprocess
ob =subprocess.Popen(['*Path to excel file*'], shell=True)
ob.communicate('H2=test')
但是,它什么也没做!
任何帮助将不胜感激
答案 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。