vue导出excel

安装依赖

npm i xlsx
import * as XLSX from "xlsx"; 
let AllData = tableData;
      let s2ab = (s) => {
        let buf = new ArrayBuffer(s.length);
        let view = new Uint8Array(buf);
        for (let i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xff;
        return buf;
      };
      let tableTitle = [
        { title: "订单编号" },
        { title: "关联课程" },
        { title: "用户名" },
        { title: "手机号" },
        { title: "订单金额" },
        { title: "下单时间" },
        { title: "订单状态" },
        { title: "退款金额" },
        { title: "退款备注" },
        { title: "场次开始日期" },
        { title: "场次结束日期" },
        { title: "订单备注" },
      ];
      let charArray = [
        "A",
        "B",
        "C",
        "D",
        "E",
        "F",
        "G",
        "H",
        "I",
        "J",
        "K",
        "L",
        "M",
        "N",
        "O",
        "P",
        "Q",
        "R",
        "S",
        "T",
        "U",
        "V",
        "W",
        "X",
        "Y",
        "Z",
      ];

      let workbook = {
        SheetNames: ["订单管理明细"],
        Sheets: {
          订单管理明细: {
            "!merges": [
              {
                s: { c: 0, r: 0 },
                e: { c: tableTitle.length - 1, r: 0 },
              },
            ],
            //宽度
            "!cols": [
              { wch: 25 },
              { wch: 18 },
              { wch: 18 },
              { wch: 18 },
              { wch: 18 },
              { wch: 22 },
              { wch: 18 },
              { wch: 18 },
              { wch: 18 },
              { wch: 24 },
              { wch: 24 },
              { wch: 18 },
            ],
          },
        },
      };
      //第一层
      workbook["Sheets"]["订单管理明细"]["A1"] = { v: "订单管理明细" };

      //第二层 更新列表名
      for (let i = 0; i < tableTitle.length; i++) {
        let c = charArray[i];
        workbook["Sheets"]["订单管理明细"][`${c}2`] = {
          v: tableTitle[i].title,
        };
      }
      let dataArray = AllData;
      let dataArrayLength = dataArray.length;
      if (dataArrayLength > 1000000) {
        return;
      }

      //第三层 数据
      for (let id = 0; id < dataArrayLength; id++) {
        let lineNum = id + 3;
        let data = dataArray[id];
        let State = "";
        if (data.state == 1) {
          State = "已付款";
        }
        if (data.state == 2) {
          State = "全额退款";
        }
        if (data.state == 3) {
          State = "已完成";
        }
        if (data.state == 4) {
          State = "已取消";
        }
        if (data.state == 5) {
          State = "部分退款";
        }
        workbook["Sheets"]["订单管理明细"]["A" + lineNum] = {
          v: data.orderCode,
        };
        workbook["Sheets"]["订单管理明细"]["B" + lineNum] = {
          v: (data.course || {}).courseName,
        };
        workbook["Sheets"]["订单管理明细"]["C" + lineNum] = {
          v: (data.member || {}).name,
        };
        workbook["Sheets"]["订单管理明细"]["D" + lineNum] = {
          v: (data.member || {}).phone ? (data.member || {}).phone : "",
        };
        workbook["Sheets"]["订单管理明细"]["E" + lineNum] = { v: data.amount };
        workbook["Sheets"]["订单管理明细"]["F" + lineNum] = {
          v: data.orderTime,
        };
        workbook["Sheets"]["订单管理明细"]["G" + lineNum] = { v: State };
        workbook["Sheets"]["订单管理明细"]["H" + lineNum] = {
          v: data.refundAmount ? data.refundAmount : "",
        };
        workbook["Sheets"]["订单管理明细"]["I" + lineNum] = {
          v: data.refundReason ? data.refundReason : "",
        };
        workbook["Sheets"]["订单管理明细"]["J" + lineNum] = {
          v: data.calendarBeginDate,
        };
        workbook["Sheets"]["订单管理明细"]["K" + lineNum] = {
          v: data.calendarEndDate,
        };
        workbook["Sheets"]["订单管理明细"]["L" + lineNum] = { v: data.remark };
      }
      workbook["Sheets"]["订单管理明细"]["!ref"] =
        "A1:L" + (dataArrayLength + 10); //修改表格起效范围
      //输出
      let workbookOut = XLSX.write(workbook, {
        bookType: "xlsx",
        bookSST: false,
        type: "binary",
      });
      //保存
      let saveAs = (obj, fileName) => {
        const a = document.createElement("a");
        a.download = fileName || "下载";
        a.href = URL.createObjectURL(obj);
        a.click();
        setTimeout(() => {
          URL.revokeObjectURL(obj);
        }, 100);
      };
      saveAs(
        new Blob([s2ab(workbookOut)], { type: "application/octet-stream" }),
        "订单管理明细.xlsx"
      );

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值