我想使用此函数将表格从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文件。
有没有办法更改下载位置?有没有办法获得下载提示(名称+位置)?
问候
答案 0 :(得分:0)
正如这个问题所指出的那样: User specified download location
无法强制“保存为”&#39;对话框,用户必须在他的浏览器选项中指定,是否要选择下载位置或是否应使用默认位置