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
相关推荐
元岳数字人小元1 分钟前
如何依托数字人源码做好私有化部署选型
人工智能·开源·人机交互·交互
kyriewen23 分钟前
我筛了 1400 个 Claude Code Skills,留下 5 个天天在用的
前端·ai编程·claude
CV-deeplearning33 分钟前
万物皆可 Markdown!开源 MCP 服务器 Markdownify,10 种格式一键转换
开源·markdown·格式转换·ai工具·mcp·markdownify
JNX_SEMI38 分钟前
AT2401C 2.4GHz 全集成射频前端单芯片技术解析
前端·单片机·嵌入式硬件·物联网·硬件工程
anOnion1 小时前
Agentic 前端开发之 实时显示 AI Agent 终端输出
前端·javascript·人工智能
随风一样自由1 小时前
【前端领域】2026最新前端领域全梳理(框架/工具/AI/跨端/底层标准/就业趋势)
前端·人工智能·前端框架
这是个栗子1 小时前
【前端性能优化】优化数据加载:用 Promise.all 从串行到并行
前端·javascript·性能优化·异步编程·前端优化·promise.all
fei_sun2 小时前
黑洞路由(Null Route/空接口路由)
服务器·前端·javascript
大爱一家盟2 小时前
告别卡点BGM同质化 2026原创卡点音乐素材下载网站 TOP5 推荐
大数据·前端·人工智能
彦为君2 小时前
算法思维与经典智力题
java·前端·redis·算法