天天看點

前端将json資料導出為Excel檔案

downloadMater(exportList) {//導出文章ID函數
      const defaultCellStyle = {
        font: { name: "Verdana", sz: 11, color: "FF00FF88" },
        fill: { fgColor: { rgb: "FFFFAA00" } }
      };
      const wopts = {
        bookType: "xlsx",
        bookSST: false,
        type: "binary",
        defaultCellStyle: defaultCellStyle,
        showGridLines: false
      };
      const wb = { SheetNames: ["Sheet1"], Sheets: {}, Props: {} };
      let data = exportList;
      wb.Sheets["Sheet1"] = XLSX.utils.json_to_sheet(data);

      //建立二進制對象寫入轉換好的位元組流
      let tmpDown = new Blob([this.s2ab(XLSX.write(wb, wopts))], {
        type: "application/octet-stream"
      });
      FileSaver.saveAs(tmpDown, "文章ID.xlsx");
    },
    //字元串轉字元流
    s2ab(s) {
      if (typeof ArrayBuffer !== "undefined") {
        var buf = new ArrayBuffer(s.length);
        var view = new Uint8Array(buf);
        for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xff;
        return buf;
      } else {
        var buf = new Array(s.length);
        for (var i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xff;
        return buf;
      }
    }
this.downloadMater(jsonData)//調用函數,傳入的資料是json格式的