我正在使用名为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以下载所需的软件包。要重现我所遇到的确切问题,您可能需要使用以下软件版本:
答案 0 :(得分:1)
这可能是由于Excel处理文件的方式。我猜Excel只用一个进程处理文件,因此后续打开文件只是向现有进程发出信号,表明在关闭之前需要打开另一个文件。
您可以通过关注these instructions强制Excel为每个文件打开一个新实例。
显然使用/x
命令行开关也将启动一个新进程:
excel.exe /x