Javascript 将带有rowspan和colspan的html表导出为csv或xls

Javascript 将带有rowspan和colspan的html表导出为csv或xls,javascript,html,css,Javascript,Html,Css,我有一个网格,如下图所示。 在这里,我们使用rowspans和colspan使其跨到一定数量的行和列 我想将相同的内容导出到excel或csv,但它应该保留跨行和跨列的格式 有没有更简单的方法可以使用Javascript和HTML实现这一点?简短回答:对不起,没有。没有简单的方法 详细回答:虽然有一些简单的方法可以将结构化html表转换为xls或csv(请参见示例:),但表中不规则的多级标题以及colspan和rowspan的多个实例破坏了表中的逻辑关系和可预测性 提示/建议: 只需对表格结构

我有一个网格,如下图所示。

在这里,我们使用rowspans和colspan使其跨到一定数量的行和列

我想将相同的内容导出到excel或csv,但它应该保留跨行和跨列的格式


有没有更简单的方法可以使用Javascript和HTML实现这一点?

简短回答:对不起,没有。没有简单的方法

详细回答:虽然有一些简单的方法可以将结构化html表转换为xls或csv(请参见示例:),但表中不规则的多级标题以及
colspan
rowspan
的多个实例破坏了表中的逻辑关系和可预测性

提示/建议: 只需对表格结构进行一些修改,即可轻松实现:

  • 机器可读性更强,因此更易于导出和操作
  • 更具可读性,包括更易于使用辅助技术的用户访问
  • 具体而言:

    • 使用列表而不是表格单元格来列出城市
    • 禁止在其他单元格上使用
      colspan
      rowspan
    • 删除多级表标题。最上面一排的外壳“Place desc”
      colspan
      绝对是多余的,而且最终是不必要的

    简短回答:对不起,没有。没有简单的方法

    详细回答:虽然有一些简单的方法可以将结构化html表转换为xls或csv(请参见示例:),但表中不规则的多级标题以及
    colspan
    rowspan
    的多个实例破坏了表中的逻辑关系和可预测性

    提示/建议: 只需对表格结构进行一些修改,即可轻松实现:

  • 机器可读性更强,因此更易于导出和操作
  • 更具可读性,包括更易于使用辅助技术的用户访问
  • 具体而言:

    • 使用列表而不是表格单元格来列出城市
    • 禁止在其他单元格上使用
      colspan
      rowspan
    • 删除多级表标题。最上面一排的外壳“Place desc”
      colspan
      绝对是多余的,而且最终是不必要的
      • 我也有同样的问题, 我自己用以下代码解决:

        下载html表格到csv文件的完整代码

        只有在可以将列编号基于特定行的情况下,代码才会结构化。在我的情况下,这是最后一次

        函数下载\u表\u作为\u csv(分隔符=','){
        //通过jquery选择器,按表id或表类在此处更改表。此代码使用类“table”。
        变量行=$('.table tr');
        //构建csv
        var csv=[];
        var lastrow=[];var repeatrowval=[];
        var tabledata=[];
        //只有当你能在一个特定的行中建立列数的基础时,代码才是结构化的。在我的情况下,它是AD中的最后一个tr。
        var cols=$('.table>thead>tr:last>th').length;$('.table>thead>tr:last>th').attr('rowSpan','1');
        对于(var i=0;i1){
        数据=最后一行[j];repeatrowval[j]=repeatrowval[j]-1;
        console.log(“行:+i+”列:+j+“=”+数据);
        行推送(““+”数据+“);
        }否则{
        如果(列[col_len]==未定义)中断;
        var colspan=col[col_len].colspan±1;
        log(“col:+j+”,colspan=“+colspan+”,repeatrowval:+repeatrowval[j])
        对于(var r=0;r1){a++};
        }
        科鲁伦++
        }
        如果(a>0){j=+a};
        }
        csv.push(行连接(分隔符));