• xlsx使用table_to_book报错Uncaught Unsupported origin when DIV is not a TABLE


    背景:const workbook = XLSX.utils.table_to_book(document.querySelector(‘#table-export’),{
    raw: true//保留原始字符串
    })报错Uncaught Unsupported origin when DIV is not a TABLE

    原因:el-table是div格式
    在这里插入图片描述

    过程1:获取深层次的table,但是只获取到了表头数据

    const workbook = XLSX.utils.table_to_book(document.querySelector('#table-export').getElementsByTagName("TABLE")[0],{
        raw: true//保留原始字符串
    })
    
    • 1
    • 2
    • 3

    过程2:遍历table,但是表头和表体分开在了两个sheet中

    const table = document.querySelector('#table-export') as HTMLTableElement;
      var wb = XLSX.utils.book_new();
      var children = table.getElementsByTagName("TABLE");
      for (var i = 0; i < children.length; ++i) {
        var ws = XLSX.utils.table_to_sheet(children[i]);
        XLSX.utils.book_append_sheet(wb, ws, "Sheet" + (i + 1));
      }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    过程3: 使用table_to_sheet再用sheet_to_json,将json对象用concat拼接,最后json_to_sheet放到一个sheet中。但是由于有合并单元格,在sheet_to_json过程中格式乱掉了

    解决:考虑在table_to_sheet之前,先将table的thead和tbody进行拼接,形成一个完整的table

    // 导出为 Excel
    const exportMergedCellsToExcel = () => {
      const table = document.querySelector('#table-export') as HTMLTableElement;
      // 创建一个新的工作簿
      let wb = XLSX.utils.book_new();
      // 获取表格的表头table
      let tableHead = table.getElementsByTagName("TABLE")[0]
      // 获取表格的表体
      let tableBody = table.getElementsByTagName("TABLE")[1].getElementsByTagName("TBODY")[0]
      // 将表体添加到表头table中
      tableHead.appendChild(tableBody)
      // 创建一个新的工作表
      let ws = XLSX.utils.table_to_sheet(tableHead);
      // 将工作表添加到工作簿
      XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
      // 将工作簿保存为 Excel 文件
      XLSX.writeFile(wb, '总分均分统计.xlsx');
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    服务器硬件的基础知识
    Android Room的使用详解
    【Android知识笔记】FrameWork中的设计模式
    Linux安装Keepalived
    Linux exec函数族
    hive 3.1.4部署
    02HTML功能元素
    Linux文件管理知识:文本处理
    获取html元素的屏幕坐标,Javascript 获取页面元素相对于电脑屏幕的坐标
    2021CCPC四川省赛题解ABDEFHIJKLM
  • 原文地址:https://blog.csdn.net/qq_37344867/article/details/133686333