使用系统function打开Excel表格

我正在使用系统函数System(mypath/test.xls)在C ++运行时打开和编辑Excel工作表。 它打开我的Excel表,允许我编辑和closures相同的。 closuresExcel表格后,控件再次转到代码。 一切工作正常,除非已经有一些其他Excel表打开。 如果在机器中已经打开了一些其他的Excel表格,我将不能编辑和closures,以便控制进入代码。 任何人都可以提出任何解决这个问题。

发生了什么事是您的System(..)函数调用要求Windowsshellfind与您的文件(test.xls),这是Excel相关的应用程序。 然后,如果Excel已经运行,则要求打开文件。 如果应用程序未运行,则Windows会为您启动应用程序。

因此,如果应用程序尚未运行并且已经启动,则它将作为“子”进程与您的程序关联。 因此,您的System(..)调用在继续之前等待它结束。 但是,如果Excel已经运行,那么一旦Windows通知你想要打开文件test.xls的实例,你对System(..)调用立即返回。

您可以通过给Excel EXE文件的完整path显式运行Excel程序来避免这种情况。 包括/ x命令行参数和文件的完整path。 / x导致Excel打开一个新的进程,然后打开您的文件。 这个新的过程是你的程序的一个孩子,所以System(..)调用将会等待。

我不熟悉System(..)调用(是否像system(..)之一),您可能必须提供switch / x和path参数作为此调用的不同参数,而不是一个长串。 也可能有关于如何启动subprocess的选项,所以等待它返回可能是可选的,等等。