我最近直接偶然发现了this JSFiddle about how to convert a table to Excel文件而没有任何花哨的插件。它确实适合我的需要,但它有一个缺陷,我无法重命名它的文件。 Chrome会将文件重命名为download
,Firefox会为其提供一个随机名称。
$("#btnExport").click(function (e) {
window.title = "filename.xls"; // this part doesn't work
window.open('data:application/vnd.ms-excel,' +
$('#dvData').html());
e.preventDefault();
});
如何重命名下载的文件?
答案 0 :(得分:2)
可以通过HTTP标头建议文件名,但是没有标准机制可以用数据URI或window.open完成同样的事情。
在下载生成的数据时,有一些方法可以指定文件名,但AFAIK并没有多个浏览器支持的任何文件。
其中一种方法是<a>
元素的新下载属性。例如:
下载你的Foo 此属性表示应下载文件(而不是显示,如果适用),并指定应该为下载的文件使用哪个文件名。
您可以使用下载属性window.open()
生成不可见的链接,而不是使用.click()
。
var str = "Name, Price\nApple, 2\nOrange, 3";
var uri = 'data:text/csv;charset=utf-8,' + str;
var downloadLink = document.createElement("a");
downloadLink.href = uri;
downloadLink.download = "data.csv";
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
答案 1 :(得分:0)
将<a>
元素与download
属性
let file = new Blob([$('#dvData').html()], {type:"application/vnd.ms-excel"});
let url = URL.createObjectURL(file);
let a = $("<a />", {
href: url,
download: "filename.xlsx"
})
.appendTo("body")
.get(0)
.click();
jsfiddle https://jsfiddle.net/jWAJ7/4549/