Table 到 Excel 出于某种原因导出为文本?

Table to Excel exports as text for some reason?

我正在制作一个脚本,该脚本应该将 html table 导出到 xls 文件。 我在测试时使用 Chrome 并且不要求它在 IE 上工作。

问题是单击导出按钮时下载的文件是文本文件。

来自文本文件的片段:

<table><tr><th>Mail</th><th>Telefonnummer</th></tr><td>asdasd@asdasd.com </td><td></td></tr><td>test@company.com </td><td></td></tr><td>asd@adsasd.com

我的代码:

var export_data = '';
        var objTable = document.getElementById('table');
        export_data += '<table><tr>';

        for(var i = 0; i < objTable.rows.length; i++){
            export_data += objTable.rows[i].innerHTML + '</tr>';
        }

        export_data += '</table>';




            sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(export_data));

        return sa;

你为什么不写一个包含 table 标题和逗号分隔的 tabe 内容的 csv 文件。那只是纯文本和一些逗号。你不需要 HTML 标签。

var export_data = '';
var objTable = document.getElementById('table');
for(var i = 0; i < objTable.rows.length; i++){
    export_data += objTable.rows[i].innerHTML + '\r\n';
}
export_data.replace(/</t(h|d)><t(h|d)>/, '; ');
export_data.replace(/<t(h|d)>/, '');
export_data.replace(/</t(h|d)>/, '');

该文件只能包含:

邮件;电话号码

asdasd@asdasd.com;

测试@company.com;

asd@adsasd.com;

window.open('data:text/csv;charset=utf-8,' + encodeURIComponent(export_data));

您也可以在这里找到一些信息: Using javascript to download file as a.csv file

您是否考虑过使用 application/csv 并使用逗号分隔值以直接的方式拼凑单元格值?

在此示例中,我生成了 6 个数据单元格,可以在 libreoffice(或也)Microsoft Excel.

中打开
<html>

<body>

<script language='JavaScript'>

function run_opencsv() {

    var export_data = '';

    export_data += 'Column1name, Column2name, Column3name' + '\n';

    export_data += 'Cell1, Cell2, Cell3' + '\n';

    export_data += 'Cell4, Cell5, Cell6' + '\n';

    sa = window.open('data:application/csv,' + encodeURIComponent(export_data));

    return sa;

    }

run_opencsv();

</script>

</body>

</html>

顺便说一句,在我的机器上(使用 firefox),您提供的代码片段确实生成了一个 .xls 数据文件。唯一的问题是其中的 export_data 文本仍然在 html 中。更接近的替代方法可能是使用 .xlsx,它被称为 Open XML 格式。所以它里面会有标签,但是它是压缩的 zip 格式。您必须使用 JSZip 之类的内容作为生成下载的最后一步。

基本上,您将创建一组纯文本的 .xml 文件,类似于您将 export_data 放在一起的方式,但最后您将合并这些 .xml 文件使用 JSZip 转换为 .xlsx 以供下载。