snippetjavascriptCritical
How to export JavaScript array info to csv (on client side)?
Viewed 0 times
arrayhowcsvinfosideclientexportjavascript
Problem
I know there are lot of questions of this nature but I need to do this using JavaScript. I am using
Any idea how I can export this to
Dojo 1.8 and have all the attribute info in array, which looks like this:[["name1", "city_name1", ...]["name2", "city_name2", ...]]Any idea how I can export this to
CSV on the client side?Solution
You can do this in native JavaScript. You'll have to parse your data into correct CSV format as so (assuming you are using an array of arrays for your data as you have described in the question):
or the shorter way (using arrow functions):
Then you can use JavaScript's
Edit: If you want to give your file a specific name, you have to do things a little differently since this is not supported accessing a data URI using the
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";
});or the shorter way (using arrow functions):
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");Then you can use JavaScript's
window.open and encodeURI functions to download the CSV file like so:var encodedUri = encodeURI(csvContent);
window.open(encodedUri);Edit: If you want to give your file a specific name, you have to do things a little differently since this is not supported accessing a data URI using the
window.open method. In order to achieve this, you can create a hidden ` DOM node and set its download` attribute as follows: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".Code Snippets
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");var encodedUri = encodeURI(csvContent);
window.open(encodedUri);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".Context
Stack Overflow Q#14964035, score: 1316
Revisions (0)
No revisions yet.