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
相关推荐
冬奇Lab5 小时前
一天一个开源项目(第256篇):Anatomy —— 让 Claude 为技术概念「发明一台机器」,画成可交互的等距插画
人工智能·开源
孟郎郎5 小时前
打造一切(Craft Anything)——克隆构造世间万物
人工智能·ai·github·软件构建·开源软件
陈随易5 小时前
纯 Go 写的 JS 引擎,跑分超过了 C 语言的 QuickJS
前端·后端·程序员
海洋之恒6 小时前
GitHub Actions 自动化:5 个真实运维提效案例
运维·自动化·github
小Z先生7 小时前
我用 Go + 系统 WebView 写了个纯本地 Postman:不装 Electron、不连云端
后端·github
子兮曰7 小时前
Chrome 权限元素实战:144 与 151 的渐进增强写法
前端·javascript·chrome
待君7 小时前
一个月 7 个版本:三版都在补同一件事 —— 卡片背面原来是空的
开源·deepseek
IT_陈寒7 小时前
Redis连接池泄漏那次,我差点把生产环境搞崩了
前端·人工智能·后端
强尼银手7 小时前
我花一天做了个格斗游戏原型,判定全对,然后被「美术」劝退了
前端·javascript
石小石Orz7 小时前
AI 正在蚕食我们的编码能力
前端·后端·算法