vue 导出excel 多个sheet

时间:2021-05-09 09:36:56
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 导出excel 多个sheet

 

vue使用js-xlsx插件 导出excel表格

data的数据格式

 vue 导出excel 多个sheet