Skip to content

Instantly share code, notes, and snippets.

@ethzero
Created July 23, 2012 08:59
Show Gist options
  • Select an option

  • Save ethzero/3162716 to your computer and use it in GitHub Desktop.

Select an option

Save ethzero/3162716 to your computer and use it in GitHub Desktop.
data_uri_csv
<html>
<head>
<script>
// really basic example
function tableToCSV(table) {
for (var
header = table.querySelectorAll("tr th"),
rows = table.querySelectorAll("tr td"),
hlength = header.length,
length = hlength + rows.length,
result = Array(hlength),
i = hlength,
j;
i < length; ++i
) {
j = i % hlength;
j || result.push("\n");
result.push(rows[j].innerHTML);
++j % hlength && result.push(",");
}
i = 0;
while (i < hlength) {
result[i] = header[i].innerHTML + (
++i < hlength ? "," : ""
);
}
return result.join("");
}
this.onload = function () {
var table = document.querySelector("#table2")
var a = document.body.appendChild(
document.createElement("a")
);
a.download = table.dataset.filename;
a.href = "data:text/csv;base64," + btoa(
tableToCSV(table)
);
a.innerHTML = "download csv";
};
</script>
</head>
<body>
<a href="data:text/csv;charset=UTF-8,'<h1>hello</h1>'">table to csv</a>
<hr>
<table border="1" id="table1" data-filename="table-1">
<tr><th>a</th> <th>b</th> <th>c</th> <th>d</th> <th>e</th> <th>f</th></tr>
<tr><td>1</td> <td>1</td> <td>2</td> <td>2</td> <td>3</td> <td>3</td></tr>
<tr><td>1</td> <td>1</td> <td>2</td> <td>2</td> <td>3</td> <td>3</td></tr>
</table>
<hr>
<table border="1" id="table2" data-filename="table-2">
<tr><th>m</th> <th>n</th> <th>o</th> <th>p</th> <th>q</th> <th>u</th></tr>
<tr><td>11</td> <td>11</td> <td>12</td> <td>12</td> <td>13</td> <td>13</td></tr>
<tr><td>11</td> <td>11</td> <td>12</td> <td>12</td> <td>13</td> <td>13</td></tr>
</table>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment