• Stars
    star
    3,616
  • Rank 12,250 (Top 0.3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 2 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

支持word(.docx)、excel(.xlsx,.xls)、pdf等各类型office文件预览的vue组件集合,提供一站式office文件预览方案,支持vue2和3,也支持React等非Vue框架。Web-based pdf, excel, word preview library

vue-office

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

《演示效果》

《非Vue框架预览看这里》

功能特色

  • 一站式:提供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>

赞助和微信交流

如果该项目确实帮助到了您,请您不吝赞助,请我喝杯蜜雪冰城交个朋友,微信:_hit757_

赞助二维码

打赏记录如下,感谢每一位打赏的朋友

时间 打赏总金额
2023-07 0
2023-06 20.01
2023-05 70
2023-04 95
2023-03 66.66
2023-02 30

恳请各位大佬不吝点赞,开源不易,感谢支持~~

我的其他库

  • v-focus-next:一个Vue指令,使用该指令后,在表单中回车之后可以自动聚焦下一个表单元素,大大提升表单填写的流畅性。 《v-focus-next》

  • HowToCode:前端编程之道,探讨如何写出高质量的前端代码,总结前端编程的各种方法论、原则、思维模型等。《前端编程之道》

More Repositories

1

vue_yii_cms

采用vue全家桶开发的一个后台管理系统,实现了动态路由权限管理,各种常用组件,包括网络请求、表单校验、表格组件(table)、文章编辑器组件(ueditor)、图片上传组件(image-upload)、面包屑(breadcrumb)、按钮(button)、菜单(menu)、模态框(modal)、toast、弹窗确认(confirm)等
Vue
141
star
2

v-experience

整理各种提升用户体验的Vue指令,支持Vue2和Vue3
JavaScript
40
star
3

HowToCode

前端编程之道,探讨如何编写出高质量的前端代码,如何提升前端人员的产品能力,前端应该具备怎样的思维模型
38
star
4

simple-flow-web

实现了一个轻量级的web端流程渲染引擎,可以用来渲染类似工作流、业务流等流程图,流程图最终可以通过序列化保存成一个json结构存储起来, 后续再通过该引擎反序列化json数据到画布上。
JavaScript
33
star
5

li-canvas

对Html5的canvas功能进行了封装,方便进行多图片绘制、圆角图片绘制、多行文字绘制、图片保存下载等功能.
JavaScript
18
star
6

form2yaml

实现Form表单(JSON)和Yaml的数据转换,支持保留Yaml注释,支持Yaml数据校验,支持Form的key与Yaml的key映射。The form2yaml.js library implements data conversion between Form (JSON) and Yaml formats. It supports preserving Yaml comments, validating Yaml data, and mapping keys between Form and Yaml.
JavaScript
7
star
7

config-form

更优雅的表单开发范式,通过配置驱动Vue表单生成,支持Vue2、Vue3,支持ElementUI及Element Plus
Vue
6
star
8

HighQualityCode

JavaScript
1
star