首页 > 其他分享 >支持多种文件(docx、excel、pdf)预览的vue组件库,支持vue2/3。

支持多种文件(docx、excel、pdf)预览的vue组件库,支持vue2/3。

时间:2023-04-07 10:46:07浏览次数:60  
标签:docx vue 预览 office excel 文档

原文链接 https://github.com/501351981/vue-office

 

功能特色

  • 一站式:提供docx、pdf、excel多种文档的在线预览方案,有它就够了
  • 简单:只需提供文档的src(网络地址)即可完成文档预览
  • 体验好:选择每个文档的最佳预览方案,保证用户体验和性能都达到最佳状态

安装

#docx文档预览组件
npm install @vue-office/docx vue-demi

#excel文档预览组件
npm install @vue-office/excel vue-demi

#pdf文档预览组件
npm install @vue-office/pdf vue-demi

如果是vue2.6版本或以下还需要额外安装 @vue/composition-api

npm install @vue/composition-api/

使用示例

文档预览场景大致可以分为两种:

  • 有文档网络地址,比如 https://***.docx
  • 文件上传时预览,此时可以获取文件的ArrayBuffer或Blob

.docx文件预览

使用网络地址预览

<template>
  <vue-office-docx 
      :src="docx"
      style="height: 100vh;"
      @rendered="rendered"
  />
</template>

<script>
//引入VueOfficeDocx组件
import VueOfficeDocx from '@vue-office/docx'
//引入相关样式
import '@vue-office/docx/lib/index.css'

export default {
  components:{
    VueOfficeDocx
  },
  data(){
    return {
      docx: 'http://static.shanhuxueyuan.com/test6.docx' //设置文档网络地址,可以是相对地址
    }
  },
  methods:{
    rendered(){
      console.log("渲染完成")
    }
  }
}
</script>

上传文件预览

读取文件的ArrayBuffer

<template>
  <div>
    <input type="file" @change="changeHandle"/>
    <vue-office-docx :src="src"/>
  </div>
</template>

<script>
import VueOfficeDocx from '@vue-office/docx'
import '@vue-office/docx/lib/index.css'

export default {
  components: {
    VueOfficeDocx
  },
  data(){
    return {
      src: ''
    }
  },
  methods:{
    changeHandle(event){
      let file = event.target.files[0]
      let fileReader = new FileReader()
      fileReader.readAsArrayBuffer(file)
      fileReader.onload =  () => {
        this.src = fileReader.result
      }
    }
  }
}
</script>

excel文件预览

通过网络地址预览示例如下,通过文件ArrayBuffer预览和上面docx的使用方式一致。

<template>
    <vue-office-excel
        :src="excel"
        style="height: 100vh;"
        @rendered="renderedHandler"
        @error="errorHandler"
    />
</template>

<script>
//引入VueOfficeExcel组件
import VueOfficeExcel from '@vue-office/excel'
//引入相关样式
import '@vue-office/excel/lib/index.css'

export default {
    components: {
        VueOfficeExcel
    },
    data() {
        return {
            excel: 'http://static.shanhuxueyuan.com/demo/excel.xlsx'//设置文档地址
        }
    },
    methods: {
        renderedHandler() {
            console.log("渲染完成")
        },
        errorHandler() {
            console.log("渲染失败")
        }
    }
}
</script>

pdf文件预览

通过网络地址预览示例如下,通过文件ArrayBuffer预览和上面docx的使用方式一致。

<template>
    <vue-office-pdf 
        :src="pdf"
        @rendered="renderedHandler"
        @error="errorHandler"
    />
</template>

<script>
//引入VueOfficePdf组件
import VueOfficePdf from '@vue-office/pdf'

export default {
    components: {
        VueOfficePdf
    },
    data() {
        return {
            pdf: 'http://static.shanhuxueyuan.com/test.pdf' //设置文档地址
        }
    },
    methods: {
        renderedHandler() {
            console.log("渲染完成")
        },
        errorHandler() {
            console.log("渲染失败")
        }
    }
}
</script>

标签:docx,vue,预览,office,excel,文档
From: https://www.cnblogs.com/lynna/p/17295419.html

相关文章

  • Vue中axios请求后res返回204,no content,res.data为undefind
    一直以为后台只要返回200-299之间的状态码就没问题,就是这个错误认知,花了三个小时终于想到解决办法附上axios 地址  axios中文文档|axios中文网|axios(axios-js.com)前面一直想着后台能接收处理请求,肯定不是后台问题,一直花时间配置前端请求指令,以及设置响应拦截器查看情况......
  • 使用vue2从零开始搭建自己的组件库(完整版)
    前言在前端开发中,除了常用的UI组件库以外,我们还会涉及到基于公司业务,需要定制化开发一些业务组件,还有随着项目的增多,开发人员的增多,为了提高工作效率,我们就需要统一管理好已开发好的业务组件。这时候我们就需要搭建自己的组件库,因为涉及到一些公司的业务,我们只能发布到私服的npm......
  • vue3.0和2.0的区别
    Vue.js是一个渐进式JavaScript框架,Vue.js3.0相比于2.0有以下区别:更快:Vue.js3.0的渲染速度比2.0快了近30%。更小:Vue.js3.0的体积比2.0小了41%。更易维护:Vue.js3.0的代码结构更加清晰,更易于维护。更易于原生:Vue.js3.0的内部实现更加接近原生JavaScript,使得开发者更容易理......
  • VSCode自建vue示例模板
    步骤打开File->Preferences->ConfigureUserSnippets选择NewGlobalSnippetsfile...输入名字(自定义),填入以下内容,注意修改vue.js路径{"Printtoconsole":{"prefix":"vue","body":["<scrip......
  • 利用ExcelJS读取Excel文件
    参考文档https://blog.csdn.net/qq_41374651/article/details/115663014https://blog.csdn.net/qiuliaiali123/article/details/104392662https://www.jianshu.com/p/fc96e22c4df1最终效果代码<template><divclass="test"><inputtype="......
  • vue全家桶进阶之路27:Vue.js 3.0的下载和安装
    使用脚手架vue-cli创建vue3项目,创建前需要准备以下:1、node.js环境见:https://www.cnblogs.com/beichengshiqiao/p/17251233.html2、npm、cnpm工具见:https://www.cnblogs.com/beichengshiqiao/p/17251860.html3、vue框架见:https://www.cnblogs.com/beichengshiqia......
  • uni-app:nvue:配置底部安全区域(hbuilderx 3.7.3)
    一,文档地址:https://uniapp.dcloud.net.cn/collocation/manifest-app.html#full-manifest如图: 说明:offset:底部安全区域偏移,"none"表示不空出安全区域,"auto"自动计算空出安全区域二,编辑配置文件:manifest.json,如图所示,选择源码视图,在app-plus一项下进行设置1,取......
  • 》》》导出excel数据接口,调用分页查询接口数据方法
    需求:导出excel数据接口,调用分页查询接口数据方法,这样共用一个业务逻辑,可以使导出数据和查询的数据保持一致,不必再重新写导出的查询逻辑1//分页列表2@GetMapper("/pageList")3publicIpage<UserVo>pageList(IntegerpageNum,IntegerpageSize,UserVoentity){4......
  • vue之双向数据绑定v-model
    目录简介语法示例简介在vue中,当修改了变量,页面内容会根据变量的变化而变化。但是如果页面变化了,变量不会变化,这个就是单向数据绑定。当页面变化,变量也会跟着变化,这个是双向数据绑定语法<inputtype="text"v-model="变量">示例<body><divid="app"><!--单向数据......
  • vue全家桶进阶之路25:Vue2的停维通知
      Vue2的技术支持会持续多久?从官方发文来看,Vue2.7是当前、同时也是最后一个Vue2.x的次级版本更新。Vue2.7会以其发布日期,即2022年7月1日开始计算,提供18个月的长期技术支持(LTS:long-termsupport)。在此期间,Vue2将会提供必要的bug修复和安全修复,但不再......