excel合并单元格导出

excel合并单元格导出

  data() {
    return {
      content: "",
      //要导出的数组,格式为每行一个数组。
      jsono: [
        ["待观察者", "@merges", "明日之星", "@merges", "超级明星", "@merges"],
        ["张三", "李四", "王五王", "赵六", "李四1", "李四2"],
        ["", "", "", "", "李四3", "李四4"],
        ["", "", "", "", "李四5", "李四6"],
        ["绩效不佳", "@merges", "中坚力量", "@merges", "表现出色", "@merges"],
        ["李四4", "李四5", "李四7", "李四8", "测试1", "测试2"],
        ["李四6", "", "李四9", "", "测试3", ""],
        ["未胜任者", "@merges", "表现尚可", "@merges", "稳定贡献者", "@merges"],
        ["小七", "管理员", "小林", "小吴", "小周", "小赵"],
        ["培训员", "", "小徐", "", "小张", ""],
      ],
    };
  },
  methods:{
      downloadExl(data) {
      let zElin = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"];
      let saveJson = {
        "!ref": `A1:${zElin[5]}${data.length}`,
        "!merges": [],
      };
      data.forEach((tr, x) => {
        tr.forEach((item, i) => {
          let key = zElin[i] + (x + 1);
          if (item == "@merges") {
            saveJson["!merges"].push({
              s: {
                c: i - 1,
                r: x,
              },
              e: {
                c: i,
                r: x,
              },
            });
          }
          saveJson[key] = {
            t: "s",
            v: item,
          };
        });
      });

      const wb = {
        SheetNames: ["Sheet1"],
        Sheets: {},
        Props: {},
      };
      const wopts = {
        bookType: "xlsx",
        bookSST: true,
        type: "binary",
        cellStyles: true,
      };
      //这里的数据是用来定义导出的数据类型
      wb.Sheets["Sheet1"] = saveJson;
      let buf = this.s2ab(XLSX.write(wb, wopts));
      this.$nextTick(() => {
        this.saveAs(
          new Blob([buf], {
            type: "application/octet-stream",
          }),
          "人才九宫格" +
            "." +
            (wopts.bookType == "biff2" ? "xls" : wopts.bookType)
        );
      });
    },
     s2ab(s) {
      if (typeof ArrayBuffer !== "undefined") {
        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;
      } else {
        let buf = new Array(s.length);
        for (let i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xff;
        return buf;
      }
    },
        saveAs(obj, fileName) {
      //创建a标签模拟下载
      let tmpa = document.createElement("a");
      tmpa.download = fileName || "下载";
      tmpa.href = URL.createObjectURL(obj);
      tmpa.click();
      setTimeout(() => {
        URL.revokeObjectURL(obj);
      }, 100);
    },
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值