Guest User

Untitled

a guest
Jul 11th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. <input id="csvFileName" type="text" value="sample.csv"/>
  2. <button type="button" onclick="getCSVfile()">CSV出力</button>
  3. <script>
  4. var data=[
  5. ['head1','head2', 'head3'],
  6. ['日本語1', '日本語2', '日本語3'],
  7. ['2cont1','2cont2\r\nnext', 'test,Test']
  8. ];
  9.  
  10. var jsonData=[
  11. {"id":1,"contents":"test,method","property":"mining"},
  12. {"id":2,"contents":"test\n改行","property":"元からの日本語"},
  13. {"id":3,"contents":"test,method","property":"mining"}
  14. ];
  15.  
  16. function getCsvStringFromJson(json){
  17. var csvHeader = [];
  18. var isSetHeader = false;
  19. var csvStr = "";
  20. json.forEach(function(arr){
  21. if (!isSetHeader){
  22. for (var key in arr){
  23. csvHeader.push(key);
  24. csvStr += key + ",";
  25.  
  26. }
  27. isSetHeader = true;
  28. } else {
  29. csvHeader.forEach(function(key){
  30. if (!arr[key]){
  31. csvStr += ","
  32. } else {
  33. var str = arr[key];
  34. if (/\n|,/.test(str)){ //正規表現での改行カンマの確認
  35. str = '"'+str+'"';
  36. }
  37. csvStr += str + ","
  38. }
  39. });
  40. }
  41. csvStr = csvStr.substring(0,csvStr.length-1);
  42. csvStr += "\n";
  43.  
  44. });
  45. csvStr = csvStr.substring(0,csvStr.length-1);
  46. return csvStr;
  47. }
  48.  
  49. function getCsvString(arr){
  50. var csvStr = "";
  51. arr.forEach(function(rowArr){
  52. rowArr.forEach(function(str){
  53. if (/\n|,/.test(str)){
  54. str = '"'+str+'"';
  55. }
  56. csvStr += str+","
  57. });
  58. csvStr = csvStr.substring(0,csvStr.length-1);
  59. csvStr += "\n";
  60. });
  61. csvStr = csvStr.substring(0,csvStr.length-1);
  62. return csvStr;
  63. }
  64.  
  65. function getCSVfile(){
  66.  
  67. // var csv = getCsvString(data);
  68. var csv = getCsvStringFromJson(jsonData)
  69. var csvName = document.getElementById("csvFileName").getAttribute("value");
  70.  
  71. var link = document.createElement('a');
  72. var bom = new Uint8Array([0xEF, 0xBB, 0xBF]);
  73. var blob;
  74.  
  75. if (window.navigator.msSaveOrOpenBlob) {
  76. // for ie
  77. blob = new Blob([bom, csv], {type: 'text/csv'});
  78. window.navigator.msSaveOrOpenBlob(blob, csvName);
  79. } else if (window.webkitURL && window.webkitURL.createObjectURL) {
  80. // for chrome (and safari)
  81. blob = new Blob([bom, csv], {type: 'text/csv'});
  82. link.setAttribute('download', csvName);
  83. link.setAttribute('href', window.webkitURL.createObjectURL(blob));
  84. link.click();
  85. } else if (window.URL && window.URL.createObjectURL) {
  86. // for firefox
  87. blob = new Blob([bom, csv], {type: 'text/csv'});
  88. link.setAttribute('download', csvName);
  89. link.setAttribute('href', window.URL.createObjectURL(blob));
  90. link.click();
  91. }
  92. }
  93. </script>
Add Comment
Please, Sign In to add comment