如何使用 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 文件进行通信? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中将 mv 命令与子进程一起使用

如何通过python子进程传递两个相同的参数?

用 Python 子进程关闭 Excel 自动化中的弹窗

如何使用 Python 多处理和 memory_profiler 分析多个子进程?

与 Python 并行运行子进程

如何加快与子进程的通信