当另一个excel文件打开时,用opn打开excel文件,将立即执行代码而无需等待

时间:2018-01-15 20:02:54

标签: node.js electron

我正在使用名为opn的库。这使得生成子进程更容易在主电子过程中打开文件。我可以使用shell但我需要能够检测文件何时关闭哪个shell API没有提供。

每当我打开一个excel文件并且没有其他excel文件打开时,它将正常工作,它会等到我解除文件才解决它。但是,如果有其他excel文件打开,它将不会等待文件关闭,它将立即解决承诺。

我在库的源代码中进行了一些挖掘,用于打开文件的命令是针对windows的命令:start "" /wait name_of_file其中name_of_file是文件的占位符。库执行的实际命令是不同的,但这个命令对我的用例来说已经足够了。即使在不使用库的情况下手动操作,我也遇到了同样的问题。也许我应该在超级用户而不是stackoverflow下发布。

这是打开文件的代码,等待文件然后执行回调。

opn(file, { app: 'EXCEL', wait: true }).then(() => {
  const stream = fs.createReadStream(file);
  papa.parse(stream, {
    delimiter: ',',
    complete: (results) => {
      mainWindow.webContents.send('uploadNewIndexFileRen', key,
        results.data);
    },
    error: (err) => {
      throw err;
    }
  });
}).catch((error) => { throw error; });

更新

这是一个快速的nodejs repo。您需要做的就是克隆/分叉以检查问题或发出拉取请求,然后执行npm install以下载所需的软件包。要重现我所遇到的确切问题,您可能需要使用以下软件版本:

  • Window 10
  • npm 5.5.1
  • node v8.9.1
  • excel 2013
  • opn 5.2.0,见package.json

1 个答案:

答案 0 :(得分:1)

这可能是由于Excel处理文件的方式。我猜Excel只用一个进程处理文件,因此后续打开文件只是向现有进程发出信号,表明在关闭之前需要打开另一个文件。

您可以通过关注these instructions强制Excel为每个文件打开一个新实例。

显然使用/x命令行开关也将启动一个新进程:

excel.exe /x