無償版の Handsontable Ver6.2.2 を使ったとき、HandsontableからCSV出力
を簡単にできるものを探していた。
https://github.com/juantascon/jquery-handsontable-csv
を見つけた、MITライセンスである。
中身をよく見ると
var csv = "sep=;\n" csv += headers.join(";") + "\n";
csv += row.join(";")
と書かれていて区切り文字がカンマではく、";" セミコロンになっているしかも、sep=; と先頭行をつけている。
これでは、カンマ区切りCSVとして意図したものでななくなってしまう。
だから、以下のとおり修正して使えば良いであろう。
var handsontable2csv = { string: function(instance) { var headers = instance.getColHeader(); var csv = ""; for (var i = 0; i < instance.countRows(); i++) { var row = []; for (var h in headers) { var prop = instance.colToProp(h) var value = instance.getDataAtRowProp(i, prop) row.push(value) } csv += row.join(",") csv += "\n"; } return csv; }, download: function(instance, filename) { var csv = handsontable2csv.string(instance) var bom = new Uint8Array([0xEF, 0xBB, 0xBF]); var link = document.createElement("a"); link.setAttribute("href", "data:text/plain;charset=utf-8," + encodeURIComponent(csv)); link.setAttribute("download", filename); document.body.appendChild(link) link.click(); document.body.removeChild(link) } }