Vue中如何实现在线预览word文件、excel文件
一、查看word
1.引用mammoth.js
(1)安装 npm install --save mammoth
1
|
npm install --save mammoth |
(2)引入import mammoth from “mammoth”;
1
|
import mammoth from "mammoth" ; |
2. 页面布局
1
2
|
<!-- word查看详情 --> < div id = "wordView" v-html = "vHtml" /></ div > |
3. 请求URL显示数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
data() { return { vHtml: "" , wordURL: '' //文件地址,看你对应怎末获取、赋值 }; }, created() { // 具体函数调用位置根据情况而定 this .readExcelFromRemoteFile( this .wordURL); } methods:{ // 在线查看word文件 readExcelFromRemoteFile: function (url) { var vm = this ; var xhr = new XMLHttpRequest(); xhr.open( "get" , url, true ); xhr.responseType = "arraybuffer" ; xhr.onload = function () { if (xhr.status == 200) { mammoth .convertToHtml({ arrayBuffer: new Uint8Array(xhr.response) }) .then( function (resultObject) { vm.$nextTick(() => { // document.querySelector("#wordView").innerHTML = // resultObject.value; vm.vHtml = resultObject.value; }); }); } }; xhr.send(); }, } |
二、查看Excel
1.引用sheetjs
(1)安装 npm install --save xlsx
1
|
npm install --save xlsx |
(2)引入import XLSX from “xlsx”;
1
|
import XLSX from "xlsx" ; |
2.页面布局
1
2
3
4
5
6
7
8
9
10
11
|
<!-- excel查看详情 --> < div id = "table" v-if = "!isWord" > < el-table :data = "excelData" style = "width: 100%" > < el-table-column v-for = "(value, key, index) in excelData[2]" :key = "index" :prop = "key" :label = "key" ></ el-table-column > </ el-table > </ div > |
3.请求URL显示数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
data() { return { excelData: [], workbook: {}, excelURL: "" , //文件地址,看你对应怎末获取、赋值 }; }, created() { // 具体函数调用位置根据情况而定 this .readWorkbookFromRemoteFile( this .wordURL); } methods:{ // 在线查看excel文件 readWorkbookFromRemoteFile: function (url) { var xhr = new XMLHttpRequest(); xhr.open( "get" , url, true ); xhr.responseType = "arraybuffer" ; let _this = this ; xhr.onload = function (e) { if (xhr.status === 200) { var data = new Uint8Array(xhr.response); var workbook = XLSX.read(data, { type: "array" }); console.log( "workbook" , workbook); var sheetNames = workbook.SheetNames; // 工作表名称集合 _this.workbook = workbook; _this.getTable(sheetNames[0]); } }; xhr.send(); }, getTable(sheetName) { console.log(sheetName); var worksheet = this .workbook.Sheets[sheetName]; this .excelData = XLSX.utils.sheet_to_json(worksheet); console.log( this .excelData); }, } |
三、项目应用:根据详情后缀分情况显示word、excel
1. 效果展示
场景说明: 点击查看按钮,吊起弹框展示数据
2. 页面布局
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
< div :style = "'border:1px dashed;width:100%;height:300px;overflow:scroll'" > <!-- word查看详情 --> < div id = "wordView" v-html = "vHtml" v-if = "isWord" /> <!-- excel查看详情 --> < div id = "table" v-if = "!isWord" > < el-table :data = "excelData" style = "width: 100%" > < el-table-column v-for = "(value, key, index) in excelData[2]" :key = "index" :prop = "key" :label = "key" ></ el-table-column > </ el-table > </ div > <!-- <div v-else></div> --> </ div > |
3.调用函数展示数据
根据row中文件后缀判断使用哪种形式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
data() { return { // 显示word excel vHtml: "" , wordURL: "" , isWord: "" , fileType: "" , // 1 word(.docx .doc) 2 excel(.xlsx .xsl) 3 其他() excelData: [], workbook: {}, excelURL: "" , //文件地址,看你对应怎末获取、赋值 }; }, methods:{ // 查看详情=列表操作 // <el-button type="text" @click="handleDetail(scope.row)" v-if="!scope.row.havePassword">查看</el-button> handleDetail(row) { console.log(row, "查看row" ); this .tzOpen = true ; this .detailForm = row; if (row.suffix === "docx" || row.suffix === "doc" ) { // this.fileType = 1; this .isWord = 1; // this.wordURL = row.url; this .readExcelFromRemoteFile(row.url); } else if (row.suffix === "xlsx" || row.suffix === "xls" ) { // this.fileType = 2; this .isWord = 0; // this.excelURL = row.url; this .readWorkbookFromRemoteFile(row.url); } }, // 在线查看excel文件 readWorkbookFromRemoteFile: function (url) { var xhr = new XMLHttpRequest(); xhr.open( "get" , url, true ); xhr.responseType = "arraybuffer" ; let _this = this ; xhr.onload = function (e) { if (xhr.status === 200) { var data = new Uint8Array(xhr.response); var workbook = XLSX.read(data, { type: "array" }); console.log( "workbook" , workbook); var sheetNames = workbook.SheetNames; // 工作表名称集合 _this.workbook = workbook; _this.getTable(sheetNames[0]); } }; xhr.send(); }, // 在线查看word文件 readExcelFromRemoteFile: function (url) { var vm = this ; var xhr = new XMLHttpRequest(); xhr.open( "get" , url, true ); xhr.responseType = "arraybuffer" ; xhr.onload = function () { if (xhr.status == 200) { mammoth .convertToHtml({ arrayBuffer: new Uint8Array(xhr.response) }) .then( function (resultObject) { vm.$nextTick(() => { // document.querySelector("#wordView").innerHTML = // resultObject.value; vm.vHtml = resultObject.value; }); }); } }; xhr.send(); }, getTable(sheetName) { console.log(sheetName); var worksheet = this .workbook.Sheets[sheetName]; this .excelData = XLSX.utils.sheet_to_json(worksheet); console.log( this .excelData); }, } #table { font-family: "Avenir" , Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; color: #2c3e50; margin-top: 60px; border: 1px solid #ebebeb; padding: 20px; width: 100%; margin: 20px auto; // border-shadow: 0 0 8px 0 rgba(232, 237, 250, 0.6), // 0 2px 4px 0 rgba(232, 237, 250, 0.5); border-radius: 10px; // overflow: scroll; height: 100%; .tab { margin: 0 0 20px 0; display: flex; flex-direction: row; } } |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
Vue中如何实现在线预览word文件、excel文件的更多相关文章
- 在线预览word、excel文件
直接使用微软提供的在线预览服务. 免费 文件必须为网可访问地址,因为微软的服务器需要访问该文件
- java通过url在线预览Word、excel、ppt、pdf、txt文档
java通过url在线预览Word.excel.ppt.pdf.txt文档中的内容[只获得其中的文字] 在页面上显示各种文档中的内容.在servlet中的逻辑 word: BufferedInputS ...
- 在线预览Word,Excel
今天在项目中遇到了在线预览word的需求,经过查阅资料与测试发现可以解决问题,特做记录: 方式: http://view.officeapps.live.com/op/view.aspx?src= s ...
- Asp.net MVC 利用(aspose+pdfobject.js) 实现在线预览word、excel、ppt、pdf文件
在线预览word.excel.ppt利用aspose动态生成html 主要代码 private bool OfficeDocumentToHtml(string sourceDoc, string s ...
- 【OfficeWebViewer】在线预览Word,Excel~
今天有个需求, 直接支持web端预览word,excel等文件, 查了一下很多写的比较麻烦, 这里找到一种简单的方式: http://view.officeapps.live.com/op/view. ...
- 基于ASP.NET MVC 利用(Aspose+Pdfobject.js) 实现在线预览Word、Excel、PPT、PDF文件
#region VS2010版本以及以上版本源码下载地址:http://download.csdn.net/download/u012949335/10231812 VS2012版本以及以上版本源码下 ...
- 在线预览word,excel文档
Google Doc 示例:https://jsfiddle.net/7xr419yb/ Microsoft Office 示例:https://jsfiddle.net/gcuzq343/
- html 实现动态在线预览word、excel、pdf等文件(方便快捷)
https://blog.csdn.net/superKM/article/details/81013304 太方便了 <iframe src='https://view.officeapps. ...
- Asp.Net在线预览Word文档的解决方案与思路
前几天有个老项目找到我,有多老呢?比我工作年限都长,见到这个项目我还得叫一声前辈. 这个项目目前使用非常稳定,十多年了没怎么更新过,现在客户想加一个小功能:在线预览Word文档. 首先想到的是用第三方 ...
- 移动端浏览器预览word、excel、ppt
移动端浏览器没有自带预览office文档的工具,最近发现一个比较好用的工具,是office官方的工具,分享给大家: 官方文档地址: 用法:打开页面https://view.officeapps.liv ...
随机推荐
- 模型驱动设计的构造块(上)——DDD
为了保证软件实践得简洁并且与模型保持一致,不管实际情况如何复杂,必须运用建模和设计的实践. 某些设计决策能够使模型和程序紧密结合在一起,互相促进对方的效用.这种结合要求我们注意每个元素的细节,对细节问 ...
- DNS欺骗
原理: dns欺骗又可以叫作中间人人攻击,主要是通过拦截受害人在访问某个网站时设备向外发送的dns请求,然后给出伪造的dns应答,实现欺骗过程. 实验脚本如下: from scapy.layers.d ...
- 2022年7月15日,第四组,周鹏,JAVA认识的第三天,算法的第一天(╥╯^╰╥)(╥╯^╰╥)
算了,已经没有力气去创作些什么了, 8种排序方法我只会4种,剩下的以后再补. 发一个逻辑题吧: 一个村落,有50户人,在这些人中存在着n个红眼病. 在保证每人每天最少见一面的情况下,有如下规则: 1, ...
- 线性方程组的直接解法——Gauss消去法
考虑线性方程组 \[\mathrm{A}x=\mathrm{b} \] 其中,\(\mathrm{A}=(a_{ij})_{n\times n}\),\(\mathrm{b}=[b_1,b_2,\cd ...
- 分享项目中在用的asp.net下载业务的服务端基类(支持客户端显示下载百分比进度,支持并发数控制,支持限速)
/// <summary> /// 功能简介:asp.net的下载业务的服务端基类(支持客户端显示下载百分比进度,支持并发数控制,支持限速) /// 创建时间:2015-11-20 /// ...
- [WPF]Win10便签软件
项目地址 Github:项目地址 软件截图 项目中用到的技术和问题 [WPF]限制程序单例运行 [WPF]创建系统栏小图标 [WPF]程序随系统自启动 [WPF]xml序列化以及反序列化数据 [WPF ...
- Matplotlib学习笔记1 - 上手制作一些图表吧!
Matplotlib学习笔记1 - 上手制作一些图表吧! Matplotlib是一个面向Python的,专注于数据可视化的模块. 快速上手 这是使用频率最高的几个模块,在接下来的程序中,都需要把它们作 ...
- 学习ASP.NET Core Blazor编程系列二十一——数据刷新
学习ASP.NET Core Blazor编程系列文章之目录 学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应 ...
- Python导入Excel表格数据并以字典dict格式保存
本文介绍基于Python语言,将一个Excel表格文件中的数据导入到Python中,并将其通过字典格式来存储的方法. 我们以如下所示的一个表格(.xlsx格式)作为简单的示例.其中,表格共有两 ...
- 用溪流 WarKey 辅助红警开局快捷操作
背景 自从发现红警除了 ddraw 补丁可以在最新的系统里玩后,就开始怀旧了.但是由于手残,遇到别人抢地盘基本上直接崩了.偶然有一次发现像 08 这样的高手点 30 个坦克使用工具的.那么,我开局用工 ...