Javascript - 将CSV下载为文件

cof*_*tor 16 javascript export-to-csv

我正在搞乱一些javascript来下载一些csv文本:

<script>
var data = '"Column One","Column Two","Column Three"';
window.location.href = 'data:text/csv;charset=UTF-8,' + encodeURIComponent(data);
</script>
Run Code Online (Sandbox Code Playgroud)

到目前为止这是有效的,但是当浏览器提示我保存文件时,没有文件名,也没有扩展名.

我怎样才能预先确定文件的名称及其扩展名window.location.href

And*_*rew 18

function downloadFile(fileName, urlData) {

    var aLink = document.createElement('a');
    var evt = document.createEvent("HTMLEvents");
    evt.initEvent("click");
    aLink.download = fileName;
    aLink.href = urlData;
    aLink.dispatchEvent(evt);
}

var data = '"Column One","Column Two","Column Three"';
downloadFile('2.csv', 'data:text/csv;charset=UTF-8,' + encodeURIComponent(data));
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/rooseve/7bUG8/

  • 不要忘记“删除”元素。 (2认同)

小智 13

在我的例子中,事实证明Excel忽略了charset = UTF-8部分.我在这篇文章中找到了一个解决方案,强制Excel考虑UTF-8.所以这最后一行对我有用:

downloadFile('2.csv', 'data:text/csv;charset=UTF-8,' + '\uFEFF' + encodeURIComponent(data));
Run Code Online (Sandbox Code Playgroud)


小智 7

更新了安德鲁的答案,以避免使用不推荐使用的功能。

来源:https : //developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events#The_old-fashioned_way

//Triggers a download of the given file
//@see /sf/ask/1482395491/
//@see https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events#The_old-fashioned_way
//
//@param fileName {string} - Name of the file to download include file extension
//@param urlData {string} - Encoded URI of the document data
function downloadFile(fileName, urlData) {

    var aLink = document.createElement('a');
    aLink.download = fileName;
    aLink.href = urlData;

    var event = new MouseEvent('click');
    aLink.dispatchEvent(event);
}

var data = '"Column One","Column Two","Column Three"';
downloadFile('2.csv', 'data:text/csv;charset=UTF-8,' + encodeURIComponent(data));
Run Code Online (Sandbox Code Playgroud)