如何使用 python 通过子进程与 Excel 文件进行通信? [关闭]
Posted
技术标签:
【中文标题】如何使用 python 通过子进程与 Excel 文件进行通信? [关闭]【英文标题】:How to communicate with Excel files via subprocess using python? [closed] 【发布时间】:2019-01-24 22:31:26 【问题描述】:如何使用子进程更改 excel 文件中的单元格? 到目前为止,我的代码是:
import subprocess
ob =subprocess.Popen(['*Path to excel file*'], shell=True)
ob.communicate('H2=test')
但是,它什么也没做!
任何帮助将不胜感激
【问题讨论】:
您希望该代码做什么?您希望如何与 Excel 文件进行交互——您学习过openpyxl
,文件是csv
格式还是其他格式?您在子流程或 Excel 或其他方面有困难吗?你写的问题太模糊了。
【参考方案1】:
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 文件。
【讨论】:
【参考方案2】:我想也许你在这里很难理解子流程模块的实际作用。
当您在其中使用shell=True
参数时,就如同您打开终端(或Windows 中的cmd)并输入该参数一样。
如果您使用的是 Windows,请尝试运行 subprocess.call('dir', shell=True)
看看会发生什么。您应该会看到显示的当前目录的内容。如果你在 mac/linux 上运行 subprocess.call('ls', shell=True)
,它也应该这样做。
因此,对于您目前的任务,这不是正确的工具。但是,此模块对于其他任务可能非常有用。
就个人而言,我喜欢结合使用 openpyxl 和 Pandas 将 Excel 工作表读取到 DataFrame 并在 python 内部对其进行操作。 Pandas 有一个很好的read_excel
函数,文档是here。
【讨论】:
以上是关于如何使用 python 通过子进程与 Excel 文件进行通信? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章