npm install -save xlsx //下载依赖包
import Vue from 'vue'; import XLSX from 'xlsx'; /** * 导出数据报表xlsx文件 * 组件方法里调用 outputXlsxFile * 例:outputXlsxFile([['字段1', '字段2'], [1, 2]], [{wch: 10}, {wch: 50}], '测试导出') 得到 测试导出.xlsx 文件
*outputXlsxFile(a,b,c);第一个参数a是导出的数组对象,第二个参数b是设置字段宽度,第三个参数c是文件名
*/
//这个方法可以挂在到vue原型上 prototype或者单独使用都可以
const outputXlsxFile = (data, wscols, xlsxName) => {
/* convert state to workbook */
var sheetNames = [];
var sheetsList= {};
for(var key in data){
sheetNames.push(key);
var temp = transferDataExcel(data[key]);//此函数是把数据处理成 [['字段(我是表头1)', '字段(我是表头2)'], ['(表头1对应的内容1)', '(表头1对应的内容2)']['内容1','内容2']...]
sheetsList[key] = XLSX.utils.aoa_to_sheet(temp);
sheetsList[key]['!cols'] = wscols;
}
const wb = XLSX.utils.book_new();
wb['SheetNames']= sheetNames;
wb['Sheets']= sheetsList;
XLSX.writeFile(wb, xlsxName + ".xlsx");
//处理数据的函数 function transferDataExcel(data){ var total = []; var temp = ['功能','功能描述','取值']; total.push(temp); data.forEach(function(item,index){ var arr = []; arr.push(item.function_name) arr.push(item.description) arr.push(item.value) total.push(arr); }) return total; } }
多个sheet表时的数据
vue使用js-xlsx插件 导出excel表格
data的数据格式