Excel可视化
- 后端返回
Excel
流前端进行展现
前言
需要:有的时候咱们须要接管到后端返回的
Excel
流,前端进行可视化展现时,这个时候依照如下步骤即可提前阐明:前端展现的
Excle
款式与格局齐全由后端管制,比方合并单元格、款式管制..前端Demo:例子 (有现成写好的接口)
装置依赖库
装置依赖库(二选一即可)
- npm install xlsx xlsx-style less less-loader@5.0.0
- yarn add xlsx xlsx-style less less-loader@5.0.0
拷贝文件夹
- src/components/x-spreadsheet
- src/util/xlsx-exchange
- 戳我下载
- 引入依赖:在你想申请展现的
.vue
文件中
import axios from 'axios'import Spreadsheet from '@/components/x-spreadsheet';import XStyle from 'xlsx-style';import Exchange from '@/util/xlsx-exchange';
启动我的项目:批改报错
cpexcel.js
(ctrl+p
间接搜寻文件即可)
(删除)-- var cpt = require('./cpt' + 'able');(增加)++ var cpt = cptable;
展现
- 定义
template
<div class="content"> <div id="xss-demo" /></div>
- 定义
data
data() { return { sheet: null, flobFileSize: 0, }},
- 初始化
xsheet
async mounted() { this.instantiateSheet();},
xsheet
配置
method: { // 设置xsheet 数据 setXsheetData(out) { this.sheet.loadData(out); if (out.length) { let colLen = Object.keys(out[0].rows[0].cells).length || 10; // let colLen = this.getTableColLen(out) || 10; let rowLen = Object.keys(out[0].rows).length || 10; this.sheet.sheet.data.rows.len = rowLen; this.sheet.sheet.data.cols.len = colLen; this.sheet.reRender(); } }, // 实例化 xsheet instantiateSheet() { let queryListHeight = 0; if (this.$refs.queryList) queryListHeight = this.$refs.queryList.$el.offsetHeight || 0; this.sheet = new Spreadsheet(document.getElementById("xss-demo"), { mode: "read", // edit | read showToolbar: false, showGrid: false, showContextmenu: false, view: { height: () => document.documentElement.clientHeight - 180 - queryListHeight, width: () => document.documentElement.clientWidth - 300, }, row: { height: 25, len: 100, }, col: { len: 16, width: 100, indexWidth: 60, minWidth: 60, }, }); },}
- 发送申请
axios({ url: 'http://39.102.36.212:3006/excelExport', method: 'post', responseType: 'blob'}).then((res) => { const self = this const result = res.data this.flobFileSize = result.size || 0; if (result instanceof Blob) { var reader = new FileReader(); reader.onload = function (e) { let data = e.target.result; console.log(data) if (data) { let workbook = XStyle.read(data, { type: "binary", cellStyles: true }); let out = Exchange.stox(workbook); self.setXsheetData(out) } else { self.setXsheetData([]) } }; reader.readAsBinaryString(result); } else { self.setXsheetData([]) }})
- 展示成果