纯前端使用xlsx实现导出表格

列表数据纯前端使用xlsx实现导出功能
基础写法
复制代码
let filename = "资产导出.xlsx";
        定义导出数据
        let data = [
          ["第一列",'','','', "第二列", "第三列"],
          [1, 2, 3],
          [true, false, null, "sheetjs"],
          ["foo", "bar", new Date("2014-02-19T14:30Z"), "0.3"],
          ["baz", null, "qux"],
        ];
        // 定义excel文档的名称
        let ws_name = "SheetJS";
        // 初始化一个excel文件
        let wb = XLSX.utils.book_new();
        // 初始化一个excel文档,此时需要传入数据
        let ws = XLSX.utils.aoa_to_sheet(data);
        ws["!merges"] = [{
              s: { c: 1, r: 0 },
              e: { c: 4, r: 0 }
          }]
        // 将文档插入文件并定义名称
        XLSX.utils.book_append_sheet(wb, ws, ws_name);
        // 执行下载
        XLSX.writeFile(wb, filename);
复制代码

 

动态添加数据
复制代码
//val即使导出的那一条的数据
exportData(val) {
      let filename = "资产导出.xlsx";
      // 定义导出数据
      let listName = [
        ["列表:"],
        [
          null,
          "序号",
        ],
      ];
      let dataList = [];
      val.assetChangeRecordDetails.map((item, index) => {
        dataList.push([ //将每一行单元格对应参数遍历按表头顺序排列
          null,
          index + 1 + "",
        ]);
      });
      // 定义excel文档的名称
      let ws_name = "导出";
      // 初始化一个excel文件
      let wb = XLSX.utils.book_new();
      // 初始化一个excel文档,此时需要传入数据
      let ws = XLSX.utils.aoa_to_sheet([...listName, ...dataList]);
      ws["!merges"] = [ //c是列,r是行,
        {
          s: { c: 0, r: 0 },
          e: { c: 7, r: 0 },
        }, //即 第一行,A1到A8合并,写出来一眼就能看明白
        {
          s: { c: 1, r: 1 },
          e: { c: 2, r: 1 },
          s: { c: 4, r: 1 },
          e: { c: 5, r: 1 },
        },
        {
          s: { c: 1, r: 2 },
          e: { c: 7, r: 2 },
        },
        {
          s: { c: 0, r: `${dataList.length}` },
          e: { c: 7, r: `${dataList.length}` },
        },
      ];
      ws["!rows"] = [ //单元格高度
        {
          hpx: 30,
        }
      ];
      ws["!cols"] = [ //单个列宽度
        {
          wpx: 80,
        },
      ];
      // 将文档插入文件并定义名称
      XLSX.utils.book_append_sheet(wb, ws, ws_name);
      // 执行下载
      XLSX.writeFile(wb, filename);

    }
复制代码

 

posted @   月亮已落  阅读(434)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示