vue可以实现word和excel的预览吗?

上传下载功能都已经实现了,图片和pdf的预览也实现了,但是word和excel的预览 网上大部分都是如同微软那样的,提供网址,进行访问的,或者就是单独起一个别人公司开发的服务进行解析,我想问问各位大佬,目前可以实现和图片、pdf类似的方式进行展示吗? 只需要展示出来 不需要在线修改什么的。

阅读 39.3k
4 个回答

Excel: SheetJS
Word: mammoth.js

当然,如果你的文档都是公网可以访问的,可以用微软提供的在线预览

<iframe src='https://view.officeapps.live.com/op/embed.aspx?src=http://remote.url.tld/path/to/document.doc' width='1366px' height='623px' frameborder='0'>This is an embedded <a target='_blank' href='http://office.com'>Microsoft Office</a> document, powered by <a target='_blank' href='http://office.com/webapps'>Office Online</a>.</iframe>

我正在使用sheetjs解析xls文件 记录一下。axios获取[局域网]存储端的文件,并将这个文件解析。生成的html用 v-html 预览 <div v-html="excel2html()"></div>

excel2html() {  
  var vm = this;  
  this.$ajax  
  .get(this.source,{  
    responseType: 'blob'  
  })  
  .then((response) => {  
    var reader = new FileReader();  
    reader.onload = e => {  
      //预处理  
      var binary = '';  
      var buf = new Uint8Array(e.target.result);  
      var length = buf.byteLength;  
      for (var i = 0; i < length; i++) {  
      binary += String.fromCharCode(buf[i]);  
    }  //读取excel  
      const wb = xlsx.read(binary, {type: "binary"});  
      console.log("wb",wb);  
      //抓取第一个sheet  
      let wsname = wb.SheetNames[0];  
      let ws = wb.Sheets[wsname];
      // setContent 是用来赋值 this.fileContent = xlsx.utils.sheet_to_html(ws)
      vm.setContent(xlsx.utils.sheet_to_html(ws))  
     };  
        reader.readAsArrayBuffer(response.data);  
    }) 
  .catch(error => {  
    console.log(error);  
   });  
 return this.fileContent;  
},
新手上路,请多包涵

请问楼主解决了吗?

新手上路,请多包涵

如果需要可以修改咋写呢

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题