JavaScript 配列情報を csv にエクスポートするにはどうすればいいですか (クライアント側)? 質問する

JavaScript 配列情報を csv にエクスポートするにはどうすればいいですか (クライアント側)? 質問する

この種の質問がたくさんあることは承知していますが、私は JavaScript を使用してこれを実行する必要があります。私はDojo 1.8すべての属性情報を配列で使用しており、その配列は次のようになります。

[["name1", "city_name1", ...]["name2", "city_name2", ...]]

CSVこれをクライアント側にエクスポートする方法をご存知ですか?

ベストアンサー1

これはネイティブ JavaScript で実行できます。次のようにデータを正しい CSV 形式に解析する必要があります (質問で説明したように、データに配列の配列を使用していると仮定します)。

const rows = [
    ["name1", "city1", "some other info"],
    ["name2", "city2", "more info"]
];

let csvContent = "data:text/csv;charset=utf-8,";

rows.forEach(function(rowArray) {
    let row = rowArray.join(",");
    csvContent += row + "\r\n";
});

またはより短い方法(矢印関数):

const rows = [
    ["name1", "city1", "some other info"],
    ["name2", "city2", "more info"]
];

let csvContent = "data:text/csv;charset=utf-8," 
    + rows.map(e => e.join(",")).join("\n");

次に、JavaScriptwindow.openencodeURI関数を使用して、次のように CSV ファイルをダウンロードできます。

var encodedUri = encodeURI(csvContent);
window.open(encodedUri);

編集:

ファイルに特定の名前を付けたい場合は、 メソッドを使用してデータ URI にアクセスする方法はサポートされていないため、少し異なる方法で行う必要があります window.open 。これを実現するには、非表示の <a> DOM ノードを作成し、その download 属性を次のように設定します。

var encodedUri = encodeURI(csvContent);
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "my_data.csv");
document.body.appendChild(link); // Required for FF

link.click(); // This will download the data file named "my_data.csv".

おすすめ記事