当前位置: 首页 > news >正文

Vue在线预览Excel和Docx格式文件

前提:本次示例基于Vue2.x,所用插件为Vue-Office。

一、Vue-Office 插件简介

Vue-Office 是一个一站式解决方案,支持多种 Office 文件格式的在线预览,包括:

  • Word(.docx)
  • Excel(.xlsx、.xls)
  • PDF
  • PowerPoint(.pptx)

它适用于 Vue 2 和 Vue 3,同时兼容非 Vue 框架(如 React),为开发者提供了简单、高效的文档预览功能。

二、功能特点

1. 简单集成:
无需为不同文件类型寻找多个库,Vue-Office 提供了统一的预览功能,只需提供文档的 URL(网络地址)即可完成预览,降低开发成本。
2. 良好的用户体验
针对每种文件类型选择了最佳的预览方案,确保加载速度、渲染效果和交互操作流畅。
3. 性能优化:
针对数据量较大的文档进行了优化,确保在高负载情况下也能保持稳定的预览效果。
4. 支持多种文件格式:
除了常见的 Word、Excel 和 PDF,还支持 PowerPoint 文件。

三、应用示例

1.安装Vue-Office相关组件

 npm install @vue-office/excelnpm install @vue-office/docx

2.vue使用
以下以Excel和Word格式文件为例:

<template><div ref="officeViewerRef" v-if="officeDialog" class="officeDemo"><vue-office-excelv-if="xlsxDialog":src="url"style="height: 100vh;"@rendered="renderedHandler"@error="errorHandler"/><vue-office-docxv-if="docxDialog":src="url"style="height: 100vh;"@rendered="renderedHandler"@error="errorHandler"/></div>
</template><script>import VueOfficeExcel from '@vue-office/excel'import '@vue-office/excel/lib/index.css'import VueOfficeDocx from '@vue-office/docx'import '@vue-office/docx/lib/index.css'export default {name: "office-viewer",components: {VueOfficeExcel,VueOfficeDocx,},data(){return {officeLoading: '',xlsxDialog:false,docxDialog:false,url:'',fjType:'',isEnd:false,officeDialog:true,}},watch: {isEnd() {this.officeDialog = false;this.$nextTick(()=>{this.officeDialog = true;})},},mounted(){this.loadFile();},methods: {loadFile(){const url ='实际文件地址';if(url.indexOf(".doc") > -1){this.fjType = 'word';}else{this.fjType = 'excel';}this.url = url;this.officeLoading = this.$loading({lock: true,target:this.$refs.officeViewerRef.$el,text: '正在加载,请稍后....',spinner: 'el-icon-loading',background: 'rgba(0, 0, 0, 0.7)'});if(this.fjType == 'excel'){this.xlsxDialog = true;}else if(this.fjType == 'word'){this.docxDialog = true;}},renderedHandler() {// this.$message.success("渲染完成!");this.officeLoading && this.officeLoading.close();if(this.fjType == 'excel'){this.isEnd = true;}},errorHandler() {this.$message.error("渲染失败!");this.officeLoading && this.officeLoading.close();},}}
</script><style lang="scss">
.officeDemo{background-color: #808080;height: 100%;padding: 30px 0;.vue-office-docx,.vue-office-excel{height: calc(100% - 60px)!important;}.vue-office-excel{width: calc(100% - 60px);margin-left: 30px;}.docx-wrapper{padding-top: 0!important;padding-bottom: 0!important;}.docx{border-radius: 3px;}.docx:last-child{margin-bottom: 0!important;}.x-spreadsheet{padding-top: 5px;box-sizing: border-box;border-radius: 5px;}
}
</style>
http://www.xdnf.cn/news/1134001.html

相关文章:

  • CentOS网络配置与LAMP环境搭建指南
  • VUEX 基础语法
  • 如何解决WordPress数据库表损坏导致的错误
  • C语言 --- 函数递归
  • 蓝光三维扫描技术:汽车轮毂轴承模具检测的高效解决方案
  • Linux 驱动中 Timer / Tasklet / Workqueue 的作用与对比
  • socket和websocket的区别
  • LeafletJS 进阶:GeoJSON 与动态数据可视化
  • rocky8 --Elasticsearch+Logstash+Filebeat+Kibana部署【7.1.1版本】
  • 【开源.NET】一个 .NET 开源美观、灵活易用、功能强大的图表库
  • MAC 苹果版Adobe Photoshop 2019下载及保姆级安装教程!!
  • 信而泰×DeepSeek:AI推理引擎驱动网络智能诊断迈向 “自愈”时代
  • SupMotion 云迁移数据工具实现原理(上)
  • unity VR linerenderer的线会被UI盖住
  • 鸿蒙系统账号与签名内容整理
  • 网络安全初级(Python实现sql自动化布尔盲注)
  • 基于大数据电信诈骗行为分析与可视化预测系统的设计与实现【海量数据、多种机器学习对比、数据优化、过采样】
  • PDF 转 Word 支持加密的PDF文件转换 批量转换 编辑排版自由
  • 混合参数等效模型
  • 暑假---作业2
  • LLM指纹底层技术——注意力机制变体
  • Mybatis07-逆向工程
  • 【代码】基于CUDA优化的RANSAC实时激光雷达点云地面分割
  • 参数检验?非参数检验?
  • java工具类Hutool
  • 工业网络协议桥接设计指南:从LIN到CAN/RS-232的毫秒级互通方案
  • 推客系统开发:从零构建高并发社交平台的技术实践
  • 基于springboot+vue的酒店管理系统设计与实现
  • 事务~~~
  • 横向移动(下)