将数据导出到特定位置javascript

时间:2015-05-11 13:20:08

标签: javascript html excel

我想使用此函数将表格从HTML导出到Excel文件中

var tableToExcel = (function () {
    var uri = 'data:application/vnd.ms-excel;base64,';
    var 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>';
    var base64 = function (s) { 
        return window.btoa(unescape(encodeURIComponent(s))) 
    }
    var 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 }
        var url = uri + base64(format(template, ctx));
        window.location.href = url;
    }
})()

默认文件名似乎是Download.xls,我已经可以通过使用这个包装下载的函数将它设置为另一个(我调整了第一个函数,它现在返回url而不是在浏览器中打开它)

function download(table, name) {
var link = document.createElement('a');
link.download = "LoL.xls";
link.href = tableToExcel(table, name);
link.click();
}

然而,在调用该函数时(例如,通过单击按钮),它总是无需下载。我想点击按钮 - 选择文件名并更重要的位置 - 然后下载excel文件。

有没有办法更改下载位置?有没有办法获得下载提示(名称+位置)?

问候

1 个答案:

答案 0 :(得分:0)

正如这个问题所指出的那样: User specified download location

无法强制“保存为”&#39;对话框,用户必须在他的浏览器选项中指定,是否要选择下载位置或是否应使用默认位置