【问题标题】:Export table to excel, add "xls" extension to the file将表格导出到excel,在文件中添加“xls”扩展名
【发布时间】:2014-11-05 12:59:33
【问题描述】:

我正在使用此函数将 HTML 表格导出到 Excel:

var tableToExcel = (function () {
        var uri = 'data:application/vnd.ms-excel;base64,'
            , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>'
            , base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) }
            , format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }
        return function (table, name) {
            if (!table.nodeType) table = document.getElementById(table)
            var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }
            window.location.href = uri + base64(format(template, ctx))
        }
    })()

一切正常,但是在创建文件时,它会将文件创建为“Unkonw”,没有任何扩展名,我可以以某种方式添加扩展名“.xls”吗?

谢谢

【问题讨论】:

    标签: excel export-to-excel


    【解决方案1】:

    唯一的方法是动态创建一个锚点并从那里下载。

    var a = document.createElement('a');
    var myFileName = 'MyFileName.xls';
    a.download = myFileName;
    a.setAttribute('href', uri + base64(format(template, ctx)));
    a.appendChild(document.createTextNode(myFileName));
    document.getElementById('myTable').appendChild(a);
    

    这是一个工作示例:http://jsfiddle.net/y0jwhnco/1/

    【讨论】:

    • 嗨,当我在 jsfiddle 中测试你的代码时,我总是有一个“未知”文件,没有任何扩展名......
    猜你喜欢
    • 1970-01-01
    • 2019-01-27
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多