1. 程式人生 > 其它 >vue 前端將一個list物件匯出成excel

vue 前端將一個list物件匯出成excel

vue 前端 將一個list匯出成excel

話不多說:程式碼

/*

 *匯出到excel(表頭可自定義)

 \* @param {string} filename 檔名稱

  \* @param {object} val 匯出的資料

  \* @param {string} excelTitle 匯出的列頭集合

 */

 export3Excel = function (filename, val, excelTitle) {

  var explorer = ''; //瀏覽器型別

  if (!!window.ActiveXObject || "ActiveXObject" in window)

   explorer = 'ie';

  //IE瀏覽器匯出

  if (explorer == 'ie') {

   var arrData = typeof val != 'object' ? JSON.parse(val) : val;

   try {

​    var oXL = new ActiveXObject("Excel.Application"); //建立AX物件excel

   } catch (e) {

​    alert("無法啟動Excel,請確保電腦中已經安裝了Excel!\n\n如果已經安裝了Excel," + "請調整IE的安全級別。\n\n具體操作:\n\n" + "工具 → Internet選項 → 安全 → 自定義級別 → ActiveX 控制元件和外掛 → 對未標記為可安全執行指令碼的ActiveX 控制元件初始化並執行指令碼 → 啟用 → 確定");

   }

   var oWB = oXL.Workbooks.Add(); //獲取workbook物件

   var oSheet = oWB.ActiveSheet; //啟用當前sheet

   var Lenr = arrData.length; //取得表格行數

   for (var i = 0; i < excelTitle.length; i++) {

​    oSheet.Cells(1, i + 1).value = excelTitle[i].value; //賦值

   }

   for (var i = 0; i < Lenr; i++) {

​    var td = 0;

​    for (var j = 0 ;j< excelTitle.length;j++) {

​     oSheet.Cells(i + 2, td + 1).value = arrData[i][excelTitle[j].key]; //賦值

​     td++;

​    }

   }

   oXL.Visible = true;



   var fname = oXL.Application.GetSaveAsFilename(filename + ".xls", "Excel Spreadsheets (*.xls), *.xls");

   oWB.SaveAs(fname);

   oWB.Close();

   oXL.Quit();

  }

  //非IE瀏覽器匯出

  else {

   var arrData = typeof val != 'object' ? JSON.parse(val) : val;

   var excel = '<table>';

   var row = "<tr>";

   

   for (var i = 0; i < excelTitle.length; i++) {

​    row += "<td>" + excelTitle[i].value + "</td>";

   }

   excel += row + "</tr>";

   for (var i = 0; i < arrData.length; i++) {

​    var row = "<tr>";

​    for (var j = 0 ;j< excelTitle.length;j++) {

​     var td = arrData[i][excelTitle[j].key];

​     if(td==null||td == undefined){

​      td = '';

​     }

​     row += "<td>" + td + "</td>";

​    }

​    excel += row + "</tr>";

   }

   excel += "</table>";

   var excelFile = "<html xmlns:o='urn:schemas-microsoft-com:office:office' " +

​    "xmlns:x='urn:schemas-microsoft-com:office:excel' xmlns='http://www.w3.org/TR/REC-html40'>";

   excelFile += '<meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8">';

   excelFile += '<meta http-equiv="content-type" content="application/vnd.ms-excel';

   excelFile += '; charset=UTF-8">';

   excelFile += "<head>";

   excelFile += "<!--[if gte mso 9]>";

   excelFile += "<xml>";

   excelFile += "<x:ExcelWorkbook>";

   excelFile += "<x:ExcelWorksheets>";

   excelFile += "<x:ExcelWorksheet>";

   excelFile += "<x:Name>";

   excelFile += "sheet";

   excelFile += "</x:Name>";

   excelFile += "<x:WorksheetOptions>";

   excelFile += "<x:DisplayGridlines/>";

   excelFile += "</x:WorksheetOptions>";

   excelFile += "</x:ExcelWorksheet>";

   excelFile += "</x:ExcelWorksheets>";

   excelFile += "</x:ExcelWorkbook>";

   excelFile += "</xml>";

   excelFile += "<![endif]-->";

   excelFile += "</head>";

   excelFile += "<body>";

   excelFile += excel;

   excelFile += "</body>";

   excelFile += "</html>";

   if ('msSaveOrOpenBlob' in navigator) {

​    var blob = new Blob([excelFile], { type: "application/vnd.ms-excel" });

​    window.navigator.msSaveOrOpenBlob(blob, filename + ".xls");

   }

   else {

​    var uri = 'data:application/vnd.ms-excel;charset=utf-8,' + encodeURIComponent(excelFile);

​    var link = document.createElement("a");

​    link.href = uri;

​    link.download = "";

​    link.style = "visibility:hidden";

​    //匯出檔名

​    link.download = filename + ".xls";

​    document.body.appendChild(link);

​    link.click();

​    document.body.removeChild(link);

   }

  }

 }

例:

var exceltitle = [{`

key:"name",value:"名字"

 }] 

呼叫:

this.export3Excel(

​            "表格名",

​            data,//要匯出的資料

​            this.excelTitle //表頭

​          )`