【问题标题】:HTML table to Excel export using/adding regex (?) in function?在函数中使用/添加正则表达式(?)将 HTML 表导出到 Excel?
【发布时间】:2020-10-02 19:18:19
【问题描述】:

我发现这个函数用于导出 HTML 表格以便从 this article 下载 excel。我正在使用cheerio.js 抓取网络数据并将其放入MongoDB 集合中,然后将其显示在表格中。该函数似乎一直有效,直到它在其中一个单元格中到达“#”,然后停止导出。

由于我没有自己编写函数,我不确定是什么原因造成的,但我有一种感觉,如果我添加或更改一些正则表达式会有所帮助吗?我自己从未使用过正则表达式,所以我真的不确定。

如果有人认为这会有所帮助,我可以发布我的网页抓取/html 表格代码。

HTML 到表格导出:

    function exportTableToExcel(tableID, filename = ''){
    var downloadLink;
    var dataType = 'application/vnd.ms-excel';
    var tableSelect = document.getElementById(tableID);
    var tableHTML = tableSelect.outerHTML.replace(/ /g, '%20');

    // Specify file name
    filename = filename?filename+'.xls':'excel_data.xls';

    // Create download link element
    downloadLink = document.createElement("a");

    document.body.appendChild(downloadLink);

    if(navigator.msSaveOrOpenBlob){
        var blob = new Blob(['\ufeff', tableHTML], {
            type: dataType
        });
        navigator.msSaveOrOpenBlob( blob, filename);
    }else{
        // Create a link to the file
        downloadLink.href = 'data:' + dataType + ', ' + tableHTML;

        // Setting the file name
        downloadLink.download = filename;

        //triggering the function
        downloadLink.click();
    }
}

这是我的输出在 html 表中的显示方式(显示正常):

但是大部分在导出到excel的时候会被截掉:

【问题讨论】:

    标签: javascript html regex excel html-table


    【解决方案1】:

    除了使用内容类型为“application/vnd.ms-excel”的(假)声明封装表格外,该函数似乎没有做任何事情。其余的由 Excel 决定。

    在表格的html代码中盲目地替换“#”字符(如果真的有文字“#”的话)是一个非常简单,容易无用并且可能很危险的事情,比如添加一行:

    tableHTML = tableHTML.replace(/#/g, '%23');
    

    这不太可能解决问题。很有可能,情况可能会变得更糟。

    在服务器端采取行动可能会更好,生成对 Excel 更友好的 html。

    您甚至可以尝试对 html 进行编码,正如其他答案似乎暗示的那样: Javascript to export html table to Excel

    【讨论】:

    • 嗯好吧,这很有趣,很高兴知道,我会多研究一下,看看我能找到什么。谢谢你的解释!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多