vue-office 支持预览多种文件(docx、excel、pdf、pptx)预览的vue组件库

官网地址:https://github.com/501351981/vue-office

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

1.在线预览word文件(以及本地上传预览)

1.1:下载组件库
html 复制代码
npm install @vue-office/docx vue-demi@0.14.6
1.2:页面使用
html 复制代码
<template>
    <div>
        <!-- 在线word预览 -->
        <!-- 本地文件上传预览 -->
        <input type="file" @change="changeHandle" />
        <vue-office-docx :src="docx" class="wordOffce" @rendered="rendered" />
    </div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
//引入VueOfficeDocx组件
import VueOfficeDocx from '@vue-office/docx'
//引入相关样式
import '@vue-office/docx/lib/index.css';

let docx = ref<any>('http://static.shanhuxueyuan.com/test6.docx');
let rendered = () => {
    console.log("渲染完成")
}
// 本地文件上传预览
let changeHandle = (event: any) => {
    let file = event.target.files[0]
    let fileReader = new FileReader()
    fileReader.readAsArrayBuffer(file)
    fileReader.onload = () => {
        docx.value = fileReader.result;
    }
}
</script>
<style lang="less" scoped>
.wordOffce {
    height: 80vh !important;

    :deep(.docx-wrapper) {
        background-color: #fff !important;
    }
}
</style>

2. 在线预览PDF文件(以及本地上传预览)

2.1:下载组件库
html 复制代码
npm install @vue-office/pdf vue-demi@0.14.6
2.2: 页面使用
html 复制代码
<template>
    <div>
        <!-- 在线pdf预览 -->
        <!-- 本地文件上传预览 -->
        <input type="file" @change="changeHandle" />
        <vue-office-pdf :src="pdf" class="wordOffce" @rendered="renderedHandler" @error="errorHandler" />
    </div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
//引入VueOfficeDocx组件
import VueOfficePdf from '@vue-office/pdf'

let pdf = ref<any>('http://static.shanhuxueyuan.com/test.pdf');
let renderedHandler = () => {
    console.log("渲染完成")
}
let errorHandler = () => {
    console.log("渲染失败")
}
// 本地文件上传预览
let changeHandle = (event: any) => {
    let file = event.target.files[0]
    let fileReader = new FileReader()
    fileReader.readAsArrayBuffer(file)
    fileReader.onload = () => {
        pdf.value = fileReader.result;
    }
}
</script>
<style lang="less" scoped>
.wordOffce {
    height: 80vh !important;
    box-shadow: 0px 0px 5px 27px rgba(0, 0, 0, 0.75);
    -webkit-box-shadow: 0px 0px 5px 27px rgba(0, 0, 0, 0.75);
    -moz-box-shadow: 0px 0px 5px 27px rgba(0, 0, 0, 0.75);

    :deep(.vue-office-pdf-wrapper) {
        background-color: #fff !important;
    }
}
</style>

3. 在线预览Excel文件(以及本地上传预览)

3.1:下载组件库
html 复制代码
npm install @vue-office/excel vue-demi@0.14.6
3.2:页面使用
html 复制代码
<template>
    <div>
        <!-- 在线pdf预览 -->
        <!-- 本地文件上传预览 -->
        <input type="file" @change="changeHandle" />
        <vue-office-excel :src="excel" class="wordOffce" @rendered="renderedHandler" @error="errorHandler" />
    </div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
//引入VueOfficeDocx组件
import VueOfficeExcel from '@vue-office/excel'
import '@vue-office/excel/lib/index.css'

let excel = ref<any>('http://static.shanhuxueyuan.com/demo/excel.xlsx');
let renderedHandler = () => {
    console.log("渲染完成")
}
let errorHandler = () => {
    console.log("渲染失败")
}
// 本地文件上传预览
let changeHandle = (event: any) => {
    let file = event.target.files[0]
    let fileReader = new FileReader()
    fileReader.readAsArrayBuffer(file)
    fileReader.onload = () => {
        excel.value = fileReader.result;
    }
}
</script>
<style lang="less" scoped>
.wordOffce {
    height: 80vh !important;
}
</style>

4. 在线预览pptx文件(以及本地上传预览)

4.1:下载组件库
html 复制代码
npm install @vue-office/pptx vue-demi@0.14.6
4.2:页面使用
html 复制代码
<template>
    <div>
        <!-- 在线pdf预览 -->
        <!-- 本地文件上传预览 -->
        <input type="file" @change="changeHandle" />
        <vue-office-pptx :src="pptx" class="wordOffce" @rendered="renderedHandler" @error="errorHandler" />
    </div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
//引入VueOfficeDocx组件
import VueOfficePptx from '@vue-office/pptx'

let pptx = ref<any>('http://static.shanhuxueyuan.com/test.pptx');
let renderedHandler = () => {
    console.log("渲染完成")
}
let errorHandler = () => {
    console.log("渲染失败")
}
// 本地文件上传预览
let changeHandle = (event: any) => {
    let file = event.target.files[0]
    let fileReader = new FileReader()
    fileReader.readAsArrayBuffer(file)
    fileReader.onload = () => {
        pptx.value = fileReader.result;
    }
}
</script>
<style lang="less" scoped>
.wordOffce {
    height: 80vh !important;
}
</style>
相关推荐
gc_22998 小时前
Vue框架学习(1:环境搭建)
vue.js
reasonsummer8 小时前
【办公类-53-12】20261016(预测)Python模仿制作2026学年第二学期校历(excel+pdf,上下学期都包含)
pdf·excel
泡海椒12 小时前
JQuick-Excel 自定义 SPI Provider:用 fullName 扩展 TRANSFORM 函数
驱动开发·excel
开开心心就好12 小时前
多份文档怎么批量打印?支持多种格式
java·服务器·开发语言·pdf·ocr·散列表·启发式算法
我的div丢了肿么办13 小时前
element-plus表格使用:filter-method过滤导致出现无数据
前端·javascript·vue.js
开开心心就好14 小时前
文件被占用删不掉?解锁工具强制删除
java·运维·服务器·开发语言·前端·pdf·ocr
贾公子14 小时前
AI 内容检测 API 接入实战——异步任务、幂等键与轮询的正确写法
vue.js
星光不问赶路人14 小时前
Vue 项目类型检查:深入理解 vue-tsc --build
前端·vue.js
WeiXin_DZbishe15 小时前
基于springboot装修风格选择系统的设计与开发-计算机毕设【课程设计】77964
java·vue.js·spring boot·后端·python·php·课程设计
雪碧聊技术15 小时前
Vue 一个页面中使用多个同类组件出现“串数据“现象?一个 key 就能解决
vue.js·v-show·一个页面使用多个相同组件·解决数据错乱·v-if、key