项目需求是下载完一个excel之后能直接打开文件,开始写的如下方法
openEXCEL(){
//this.bomoutput是文件存放在本地的路径
//先测试下是否有this.bomoutput文件
myUtils.haveFile(this.bomoutput,(d)=>{
if(d){
//有的话执行打开操作,一句命令就可以,但是怎么也不成功,后来各种尝试是因为文件名称中有特殊字符“()”,因为尝试过没有特殊字符就可以打开。
childProcess.exec(`${this.bomoutput}`, { encoding: 'binary' },(err,stdout,stderr)=>{
if(stdout){
console.log("stdout");
console.log(this.iconv.decode(stdout, 'cp936'))
} else {
}
this.dialogFinishBomVisible=false;
})
}
})
},
解决方法:传的路径要加上“”,作为一个整体,现在可以直接打开带特殊字符的文件了
childProcess.exec(`"${this.bomoutput}"`, { encoding: 'binary' },(err,stdout,stderr)=>{
if(stdout){
console.log("stdout");
console.log(this.iconv.decode(stdout, 'cp936'))
} else {
}
this.dialogFinishBomVisible=false;
})
以上是直接打开文件的方法,补充一下打开文件所在目录的方法,如下:
//需要用到电脑自带的explorer
openDirectory(){
let openpath = path.join(this.bompath.dir+'\明细表');//要打开的文件夹
console.log(openpath)
childProcess.exec(`explorer ${openpath}`, (err,stdout,stderr)=>{
if (err) {
} else {
}
this.dialogFinishBomVisible=false;
})
},