我的 .js 文件中有一个逗号分隔的变量,例如:
var out='';
out+="1,val1,val2,val3,val4\n";
out+="2,val1,val2,val3,val4\n";
out+="3,val1,val2,val3,val4\n";
我正在使用document.write(out);
.
我希望该out
变量可以作为.csv
文件下载。
根据存储在变量中的数据,有没有办法在 JavaScript 中创建 csv 文件及其相关的下载链接?
我的 .js 文件中有一个逗号分隔的变量,例如:
var out='';
out+="1,val1,val2,val3,val4\n";
out+="2,val1,val2,val3,val4\n";
out+="3,val1,val2,val3,val4\n";
我正在使用document.write(out);
.
我希望该out
变量可以作为.csv
文件下载。
根据存储在变量中的数据,有没有办法在 JavaScript 中创建 csv 文件及其相关的下载链接?
取决于浏览器的支持,但新的浏览器变得相当不错:http: //jsfiddle.net/3fMeL/2/
var CSV = [
'"1","val1","val2","val3","val4"',
'"2","val1","val2","val3","val4"',
'"3","val1","val2","val3","val4"'
].join('\n');
window.URL = window.webkitURL || window.URL;
var contentType = 'text/csv';
var csvFile = new Blob([CSV], {type: contentType});
var a = document.createElement('a');
a.download = 'my.csv';
a.href = window.URL.createObjectURL(csvFile);
a.textContent = 'Download CSV';
a.dataset.downloadurl = [contentType, a.download, a.href].join(':');
document.body.appendChild(a);
所以第一项是 Blob 对象,这将创建可以下载的对象。https://developer.mozilla.org/en-US/docs/Web/API/Blob ( http://caniuse.com/#search=blob )
下一部分是链接的下载属性,它通知浏览器下载 CSV 文件,而不是在浏览器窗口中打开它。( http://caniuse.com/#feat=download )
在客户端有用于输出文件的 jquery 插件,无需服务器端交互,