Edited at

ブラウザからjsの配列をcsvとしてダウンロードする。

More than 3 years have passed since last update.


準備

以下を開発者ツールなどのコンソールで実行。

var downloadCsv = (function() {

var tableToCsvString = function(table) {
var str = '\uFEFF';
for (var i = 0, imax = table.length - 1; i <= imax; ++i) {
var row = table[i];
for (var j = 0, jmax = row.length - 1; j <= jmax; ++j) {
str += '"' + row[j].replace('"', '""') + '"';
if (j !== jmax) {
str += ',';
}
}
str += '\n';
}
return str;
};

var createDataUriFromString = function(str) {
return 'data:text/csv,' + encodeURIComponent(str);
}

var downloadDataUri = function(uri, filename) {
var link = document.createElement('a');
link.download = filename;
link.href = uri;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
};

return function(table, filename) {
if (!filename) {
filename = 'output.csv';
}
var uri = createDataUriFromString(tableToCsvString(table));
downloadDataUri(uri, filename);
};

})();


使い方

var table = [['', ''], ['a', 'i']];

downloadCsv(table);


結果

"あ","い"

"a","i"


注意点



  • 文字列をbase64でエンコードするbtoaがマルチバイト対応していないため、日本語の文字列は非対応です。(mpywさんに修正していだきました)

  • 2次元配列以外は考慮していません。

  • IE非対応