vue-office:Star 4.2k,款支持多种Office文件预览的Vue组件库,一站式Office文件预览方案,真心不错

嗨,大家好,我是小华同学,关注我们获得"最新、最全、最优质"开源项目和高效工作学习方法

vue-office 是一个支持多种文件格式(docx、excel、pdf、pptx)预览的Vue组件库,它不仅支持Vue2和Vue3,还兼容非Vue框架如React等。这个Web-based的库提供了一个全面的解决方案,用于在线预览pdf、excel、word和pptx文档。

功能特色

一站式解决方案

提供word(.docx)、pdf、excel(.xlsx, .xls)、ppt(.pptx)等多种文档的在线预览方案,一个库满足所有需求。

简单易用

只需提供文档的src(网络地址)即可完成文档预览。

良好的用户体验

选择每个文档的最佳预览方案,保证用户体验和性能都达到最佳状态。

性能优化

针对数据量较大的文件进行了优化。

安装

docx文档预览组件

npm install @vue-office/docx vue-demi@0.14.6

excel文档预览组件

npm install @vue-office/excel vue-demi@0.14.6

pdf文档预览组件

npm install @vue-office/pdf vue-demi@0.14.6

pptx文档预览组件

npm install @vue-office/pptx vue-demi@0.14.6

对于Vue2.6版本或以下,还需要额外安装@vue/composition-api

npm install @vue/composition-api

使用示例

文档预览场景大致可以分为三种:有文档CDN地址、通过接口请求获取文件内容、文件上传时预览。

1. 使用网络地址预览

docx文件预览示例

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

<script>
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>

2. 上传文件预览

读取文件的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>

3. 二进制文件预览

如果后端给的不是CDN地址,而是一些POST接口,该接口返回二进制流,则可以调用接口获取文件的ArrayBuffer数据,传递给src属性。

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

<script>
import VueOfficeDocx from '@vue-office/docx'
import '@vue-office/docx/lib/index.css'
export default {
    components:{
        VueOfficeDocx
    },
    data(){
        return {
            docx: ''
        }
    },
    mounted(){
        fetch('你的API文件地址', {
            method: 'post'
        }).then(res=>{
            //读取文件的arrayBuffer
            res.arrayBuffer().then(res=>{
                this.docx = res
            })
        })
    },
    methods:{
        rendered(){
            console.log("渲染完成")
        }
    }
}
</script>

项目依赖的第三方库

  • docx:基于docx-preview库实现,相关issues暂不处理。

  • pdf:基于pdfjs库实现,实现了虚拟列表增加性能。

  • excel:基于exceljs 和 x-data-spreadsheet实现,全网样式支持更好。

  • pptx :基于自研库 pptx-preview 实现,源码单独付费向作者索取。

项目效果

结语

Vue-office为开发者提供了一种简单、高效的Office文件预览解决方案。无论是Word、Excel、PDF还是PPTX文件,都可以轻松实现预览功能。如果你正在寻找这样的解决方案,Vue-office绝对值得一试。

最后,值得一提的是,市场上还有其他同类项目,但Vue-office以其出色的性能和易用性在开发者中建立了良好的口碑。如果你想了解更多关于Vue-office的信息,或者有其他相关问题,欢迎继续关注我们的后续文章。

项目地址

https://github.com/501351981/vue-office
相关推荐
木心23 分钟前
Git基本操作快速入门(30min)
git·github
一个不秃头的 程序员1 小时前
代码加入SFTP JAVA ---(小白篇3)
java·python·github
逸_1 小时前
dify工作流+github actions实现翻译并创建PR
gpt·github·dify
vvw&1 小时前
Docker Build 命令详解:在 Ubuntu 上构建 Docker 镜像教程
linux·运维·服务器·ubuntu·docker·容器·开源
小马哥编程1 小时前
Function.prototype和Object.prototype 的区别
javascript
小白学前端6661 小时前
React Router 深入指南:从入门到进阶
前端·react.js·react
苹果醋31 小时前
React系列(八)——React进阶知识点拓展
运维·vue.js·spring boot·nginx·课程设计
web130933203981 小时前
前端下载后端文件流,文件可以下载,但是打不开,显示“文件已损坏”的问题分析与解决方案
前端
王小王和他的小伙伴1 小时前
解决 vue3 中 echarts图表在el-dialog中显示问题
javascript·vue.js·echarts
学前端的小朱1 小时前
处理字体图标、js、html及其他资源
开发语言·javascript·webpack·html·打包工具