我写了这个导出按钮,它基本上将我在谷歌表上的所有数据都吐出成CSV供下载。它工作得非常好,直到我有太多行,当我尝试下载csv时,Chrome会给我“aw snap”错误页面。我该如何解决这个问题?
var csvContent = "data:text/csv;charset=utf-8,";
data.forEach(function (infoArray, index) {
dataString = infoArray.join(",");
csvContent += dataString + "\n";
});
var encodedUri = encodeURI(csvContent);
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "Data.csv");
link.click();
答案 0 :(得分:18)
Chrome只能处理大约200万字符长(或更短)的HREF。
您希望将输出添加到Blob,然后在该blob上使用URL.createObjectURL
(MDN)创建ObjectURL并将其附加到锚点的href属性。
一个例子可能是:
var csvContent = "";
data.forEach(function (infoArray, index) {
dataString = infoArray.join(",");
csvContent += dataString + "\n";
});
var blobdata = new Blob([csvContent],{type : 'text/csv'});
var link = document.createElement("a");
link.setAttribute("href", window.URL.createObjectURL(blobdata));
link.setAttribute("download", "Data.csv");
document.body.appendChild(link);
link.click();