<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      前端實現導出Excel表格數據

      前端使用 ExportExce導出表格數據

      步驟一、 下載依賴

      cnpm install file-saver@1.3.8 xlsx@0.14.1 --save

      步驟二、創建一個ExportExce.js 文件

      注意: vue中的話 一般是在 util文件夾下 創建的 nuxt的話在 plugins下

      ExportExce.js

      /* eslint-disable */
      import { saveAs } from 'file-saver'
      import XLSX from 'xlsx'
       
      function generateArray(table) {
      var out = [];
      var rows = table.querySelectorAll('tr');
      var ranges = [];
      for (var R = 0; R < rows.length; ++R) {
      var outRow = [];
      var row = rows[R];
      var columns = row.querySelectorAll('td');
      for (var C = 0; C < columns.length; ++C) {
      var cell = columns[C];
      var colspan = cell.getAttribute('colspan');
      var rowspan = cell.getAttribute('rowspan');
      var cellValue = cell.innerText;
      if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;
       
      //Skip ranges
      ranges.forEach(function (range) {
      if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) {
      for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null);
      }
      });
       
      //Handle Row Span
      if (rowspan || colspan) {
      rowspan = rowspan || 1;
      colspan = colspan || 1;
      ranges.push({
      s: {
      r: R,
      c: outRow.length
      },
      e: {
      r: R + rowspan - 1,
      c: outRow.length + colspan - 1
      }
      });
      };
       
      //Handle Value
      outRow.push(cellValue !== "" ? cellValue : null);
       
      //Handle Colspan
      if (colspan)
      for (var k = 0; k < colspan - 1; ++k) outRow.push(null);
      }
      out.push(outRow);
      }
      return [out, ranges];
      };
       
      function datenum(v, date1904) {
      if (date1904) v += 1462;
      var epoch = Date.parse(v);
      return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
      }
       
      function sheet_from_array_of_arrays(data, opts) {
      var ws = {};
      var range = {
      s: {
      c: 10000000,
      r: 10000000
      },
      e: {
      c: 0,
      r: 0
      }
      };
      for (var R = 0; R != data.length; ++R) {
      for (var C = 0; C != data[R].length; ++C) {
      if (range.s.r > R) range.s.r = R;
      if (range.s.c > C) range.s.c = C;
      if (range.e.r < R) range.e.r = R;
      if (range.e.c < C) range.e.c = C;
      var cell = {
      v: data[R][C]
      };
      if (cell.v == nullcontinue;
      var cell_ref = XLSX.utils.encode_cell({
      c: C,
      r: R
      });
       
      if (typeof cell.v === 'number') cell.t = 'n';
      else if (typeof cell.v === 'boolean') cell.t = 'b';
      else if (cell.v instanceof Date) {
      cell.t = 'n';
      cell.z = XLSX.SSF._table[14];
      cell.v = datenum(cell.v);
      else cell.t = 's';
       
      ws[cell_ref] = cell;
      }
      }
      if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
      return ws;
      }
       
      function Workbook() {
      if (!(this instanceof Workbook)) return new Workbook();
      this.SheetNames = [];
      this.Sheets = {};
      }
       
      function s2ab(s) {
      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;
      }
       
      export function export_table_to_excel(id) {
      var theTable = document.getElementById(id);
      var oo = generateArray(theTable);
      var ranges = oo[1];
       
      /* original data */
      var data = oo[0];
      var ws_name = "SheetJS";
       
      var wb = new Workbook(),
      ws = sheet_from_array_of_arrays(data);
       
      /* add ranges to worksheet */
      // ws['!cols'] = ['apple', 'banan'];
      ws['!merges'] = ranges;
       
      /* add worksheet to workbook */
      wb.SheetNames.push(ws_name);
      wb.Sheets[ws_name] = ws;
       
      var wbout = XLSX.write(wb, {
      bookType: 'xlsx',
      bookSST: false,
      type: 'binary'
      });
       
      saveAs(new Blob([s2ab(wbout)], {
      type: "application/octet-stream"
      }), "test.xlsx")
      }
       
      export function export_json_to_excel({
      multiHeader = [],
      header,
      data,
      filename,
      merges = [],
      autoWidth = true,
      bookType = 'xlsx'
      } = {}) {
      /* original data */
      filename = filename || 'excel-list'
      data = [...data]
      data.unshift(header);
       
      for (let i = multiHeader.length - 1; i > -1; i--) {
      data.unshift(multiHeader[i])
      }
       
      var ws_name = "SheetJS";
      var wb = new Workbook(),
      ws = sheet_from_array_of_arrays(data);
       
      if (merges.length > 0) {
      if (!ws['!merges']) ws['!merges'] = [];
      merges.forEach(item => {
      ws['!merges'].push(XLSX.utils.decode_range(item))
      })
      }
       
      if (autoWidth) {
      /*設置worksheet每列的最大寬度*/
      const colWidth = data.map(row => row.map(val => {
      /*先判斷是否為null/undefined*/
      if (val == null) {
      return {
      'wch': 10
      };
      }
      /*再判斷是否為中文*/
      else if (val.toString().charCodeAt(0) > 255) {
      return {
      'wch': val.toString().length * 2
      };
      else {
      return {
      'wch': val.toString().length
      };
      }
      }))
      /*以第一行為初始值*/
      let result = colWidth[0];
      for (let i = 1; i < colWidth.length; i++) {
      for (let j = 0; j < colWidth[i].length; j++) {
      if (result[j]['wch'] < colWidth[i][j]['wch']) {
      result[j]['wch'] = colWidth[i][j]['wch'];
      }
      }
      }
      ws['!cols'] = result;
      }
       
      /* add worksheet to workbook */
      wb.SheetNames.push(ws_name);
      wb.Sheets[ws_name] = ws;
       
      var wbout = XLSX.write(wb, {
      bookType: bookType,
      bookSST: false,
      type: 'binary'
      });
      saveAs(new Blob([s2ab(wbout)], {
      type: "application/octet-stream"
      }), `${filename}.${bookType}`);
      }
       
      function formatJson(jsonSource, jsonFillter) {
      return jsonSource.map(v => jsonFillter.map(j => {
      return v[j]
      }))
      }
       
      export function export_json_to_excel2(th, jsonSource, jsonFillter, name) {
      const data = formatJson(jsonSource, jsonFillter)
      export_json_to_excel({header: th, data, filename: name})
      }

      步驟三、界面中使用

      nuxt的話 需要在nuxt.config.js下的 plugins中引入

      plugins:[
      "@/plugins/ExportExce"
      ]

      點擊導出Excel的方法中代碼如下

      // 點擊導出表格數據的方法
      exportes(){
      // vue 在 util中 nuxt 在 plugins中
      import('@/util/ExportExcel').then(excel => {
      const tHeader = ['商品ID''商品編號''名稱''專柜價格''當前價格''是否新品''是否熱品''是否在售']
      const filterVal = ['id''goodsSn''name''counterPrice''retailPrice''isNew''isHot''isOnSale']
      excel.export_json_to_excel2(tHeader, this.list, filterVal, '收益數據')
      })
      }

      以上就是在 vue / nuxt 中實現導出表格的操作 希望對你們有所幫助

      posted @ 2023-07-27 14:49  村長17歲  閱讀(500)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 高清国产一区二区无遮挡| 日本九州不卡久久精品一区| 国产精品爽黄69天堂A| 亚洲日韩av无码| 国产不卡一区二区在线视频| 熟女在线视频一区二区三区 | 日产国产一区二区不卡| 三级4级全黄60分钟| 狠狠婷婷色五月中文字幕| 文山县| 亚洲精品国产摄像头| 无码人妻一区二区三区四区AV| 116美女极品a级毛片| 久久综合色之久久综合色| 久久天天躁狠狠躁夜夜婷| 色婷婷狠狠久久综合五月| 97久久久精品综合88久久| 巨胸不知火舞露双奶头无遮挡| 亚洲国产精品ⅴa在线观看| 亚洲无人区码二码三码区| 久久国内精品自在自线观看| 久久青草国产精品一区| 精品无码国产一区二区三区av| 内射老阿姨1区2区3区4区| 99久久无色码中文字幕| 招远市| 九九热在线视频免费播放| 国产伦码精品一区二区| 桃花岛亚洲成在人线AV| 豆国产97在线 | 亚洲| 国产精品中文字幕日韩| 中宁县| 国产精品国产三级国产试看| 国产一区二区不卡自拍| 欧美成人精精品一区二区三区| 国产高清亚洲一区亚洲二区| 国产精品视频亚洲二区| 国产精品人妻一区二区高| 国产精品一区二区日韩精品| 国产av中文字幕精品| 久久久久国精品产熟女久色|