本文目录一览:

有人知道,vue怎么导出excel表格么

参考代码:

var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';

var fromCharCode = String.fromCharCode;

var INVALID_CHARACTER_ERR = (function () {

"use strict";

// fabricate a suitable error object

try {

document.createElement('$');

} catch (error) {

return error;

}

}());

// encoder

if (!window.btoa) {

window.btoa = function (string) {

"use strict";

var a, b, b1, b2, b3, b4, c, i = 0, len = string.length, max = Math.max, result = '';

while (i len) {

a = string.charCodeAt(i++) || 0;

b = string.charCodeAt(i++) || 0;

c = string.charCodeAt(i++) || 0;

if (max(a, b, c) 0xFF) {

throw INVALID_CHARACTER_ERR;

}

b1 = (a 2) 0x3F;

b2 = ((a 0x3) 4) | ((b 4) 0xF);

b3 = ((b 0xF) 2) | ((c 6) 0x3);

b4 = c 0x3F;

if (!b) {

b3 = b4 = 64;

} else if (!c) {

b4 = 64;

}

result += characters.charAt(b1) + characters.charAt(b2) + characters.charAt(b3) + characters.charAt(b4);

}

return result;

};

}

// decoder

if (!window.atob) {

window.atob = function(string) {

"use strict";

string = string.replace(new RegExp("=+$"), '');

var a, b, b1, b2, b3, b4, c, i = 0, len = string.length, chars = [];

if (len % 4 === 1) {

throw INVALID_CHARACTER_ERR;

}

while (i len) {

b1 = characters.indexOf(string.charAt(i++));

b2 = characters.indexOf(string.charAt(i++));

b3 = characters.indexOf(string.charAt(i++));

b4 = characters.indexOf(string.charAt(i++));

a = ((b1 0x3F) 2) | ((b2 4) 0x3);

b = ((b2 0xF) 4) | ((b3 2) 0xF);

c = ((b3 0x3) 6) | (b4 0x3F);

chars.push(fromCharCode(a));

b chars.push(fromCharCode(b));

c chars.push(fromCharCode(c));

}

return chars.join('');

};

}

ExcellentExport = (function() {

"use strict";

var version = "1.3";

var csvSeparator = ',';

var uri = {excel: 'data:application/vnd.ms-excel;base64,', csv: 'data:application/csv;base64,'};

var template = {excel: 'html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns=""headmeta http-equiv="Content-Type" content="text/html; charset=UTF-8"!--[if gte mso 9]xmlx:ExcelWorkbookx:ExcelWorksheetsx:ExcelWorksheetx:Name{worksheet}/x:Namex:WorksheetOptionsx:DisplayGridlines//x:WorksheetOptions/x:ExcelWorksheet/x:ExcelWorksheets/x:ExcelWorkbook/xml![endif]--/headbodytable{table}/table/body/html'};

var csvDelimiter = ",";

var csvNewLine = "/r/n";

var base64 = function(s) {

return window.btoa(window.unescape(encodeURIComponent(s)));

};

var format = function(s, c) {

return s.replace(new RegExp("{(//w+)}", "g"), function(m, p) {

return c[p];

});

};

var get = function(element) {

if (!element.nodeType) {

return document.getElementById(element);

}

return element;

};

var fixCSVField = function(value) {

var fixedValue = value;

var addQuotes = (value.indexOf(csvDelimiter) !== -1) || (value.indexOf('/r') !== -1) || (value.indexOf('/n') !== -1);

var replaceDoubleQuotes = (value.indexOf('"') !== -1);

if (replaceDoubleQuotes) {

fixedValue = fixedValue.replace(/"/g, '""');

}

if (addQuotes || replaceDoubleQuotes) {

fixedValue = '"' + fixedValue + '"';

}

return fixedValue;

};

var tableToCSV = function(table) {

var data = "";

var i, j, row, col;

for (i = 0; i table.rows.length; i++) {

row = table.rows[i];

for (j = 0; j row.cells.length; j++) {

col = row.cells[j];

data = data + (j ? csvDelimiter : '') + fixCSVField(col.textContent.trim());

}

data = data + csvNewLine;

}

return data;

};

var ee = {

/** @expose */

excel: function(anchor, table, name) {

table = get(table);

var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML};

var hrefvalue = uri.excel + base64(format(template.excel, ctx));

anchor.href = hrefvalue;

// Return true to allow the link to work

return true;

},

/** @expose */

csv: function(anchor, table, delimiter, newLine) {

if (delimiter !== undefined delimiter) {

csvDelimiter = delimiter;

}

if (newLine !== undefined newLine) {

csvNewLine = newLine;

}

table = get(table);

var csvData = tableToCSV(table);

var hrefvalue = uri.csv + base64(csvData);

anchor.href = hrefvalue;

return true;

}

};

return ee;

}());

vue项目中如何把表格导出excel表格

有一个项目需求,要求在前端项目中导出Excel表格,经过查找代码,Vue.js确实可以实现,具体实现步骤为:

1. 安装依赖

//npm npm install -S file-saver xlsx

npm install -D script-loader

或者

//yarnyarn add file-saver

yarn add xlsx

yarn add script-loader --dev

2.导入两个JS

下载Blob.js和Export2Excel.js,在src目录下新建Excel文件夹,里面放入Blob.js和Export2Excel.js两个JS文件

image

**3.在main.js引入这两个JS文件 **

import Blob from './excel/Blob'import Export2Excel from './excel/Export2Excel.js'

4.在组件中使用

//导出的方法exportExcel() {

require.ensure([], () = {

const { export_json_to_excel } = require('../excel/Export2Excel');

const tHeader = ['序号', '昵称', '姓名'];

// 上面设置Excel的表格第一行的标题

const filterVal = ['index', 'nickName', 'name'];

// 上面的index、nickName、name是tableData里对象的属性

const list = this.tableData; //把data里的tableData存到list

const data = this.formatJson(filterVal, list);

export_json_to_excel(tHeader, data, '列表excel');

})

},

formatJson(filterVal, jsonData) {

return jsonData.map(v = filterVal.map(j = v[j]))

}

tHeader是表头,filterVal 中的数据是表格的字段,tableData中存放表格里的数据,类型为数组,里面存放对象,表格的每一行为一个对象。

tableData 中的值为:

data () {

return {

tableData: [

{'index':'0',"nickName": "沙滩搁浅我们的旧时光", "name": "小明"},

{'index':'1',"nickName": "女人天生高贵", "name": "小红"},

{'index':'2',"nickName": "海是彩色的灰尘", "name": "小兰"}

]

}

}

最后实现的效果图:

image

如果运行时,报如下所示的错误:

image

这是因为Export2Excel.js的设置需要改下:

image

注: 把require('script-loader!vendor/Blob')改为 require('./Blob.js')

demo 地址:

vue将查询出来的表格数据导出为excel表格

一、需要安装三个依赖:

div class="jb51code" ="" pre="" npm="" install="" -s="" file-saver="" xlsx="" -d="" script-loader=""

二、项目中新建一个文件夹:(vendor---名字任取)

里面放置两个文件Blob.js和 Export2Excel.js。

Blob.js和 Export2Excel.js文件下载地址:a target="_blank" href="" export2exce_jb51.rar

a target="_blank" href="" export2exce_jb51.rar

a target="_blank" href="" export2exce_jb51.rar三、在.vue文件中

写这两个方法:其中list是表格的内容

div class="jb51code" ="" { const { export_json_to_excel } = require('../../vendor/Export2Excel'); const tHeader = ['序号','IMSI','MSISDN','证件号码','姓名']; const filterVal = ['ID','imsi','msisdn','address','name']; const list = this.tableData; const data = this.formatJson(filterVal,list); export_json_to_excel(tHeader,data,'列表excel'); }) },formatJson(filterVal,jsonData) { return jsonData.map(v = filterVal.map(j = v[j])) }

四、按钮导出调用export2Excel方法

注:如果webpack报解析错误:

在build----webpack.base.conf.js中resolve的alias加入 'vendor': path.resolve(__dirname,'../src/vendor'),

即可解决

另:alias是配置别名 

前端下载Excel时 URL.createObjectURL报错问题

首先前端用的是vue环境,用axios独立封装的一个接口,请求接口开始是这样的

前端请求后,获取到数据

然后浏览器会报一个错误 Failed to execute 'createObjectURL' on 'URL': No function was found that matched the signature provided.

查阅资料后得知 当 URL.createObjectURL(data) 这个data不是 blob类型就会报错

只要在axios请求接口中加一个参数 responseType: 'blob' 就能解决 导出报错问题