この種の質問がたくさんあることは承知していますが、私は 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.open
とencodeURI
関数を使用して、次のように 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".