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

时间:2018-01-21 20:38:39

标签: javascript html html-table export-to-excel

我正在制作一个应该将html表导出到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;

2 个答案:

答案 0 :(得分:0)

为什么不写一个包含表标题和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)>/, '');

该文件只能包含:

邮件; Telefonnummer

asdasd@asdasd.com;

test@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

答案 1 :(得分:0)

您是否考虑使用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放在一起的方式,但最后您将使用JSZip的.xml文件合并到.xlsx中进行下载。