daily pastebin goal
75%
SHARE
TWEET

Untitled

a guest Jul 11th, 2018 67 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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>
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top