Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <input id="csvFileName" type="text" value="sample.csv"/>
- <button type="button" onclick="getCSVfile()">CSV出力</button>
- <script>
- var data=[
- ['head1','head2', 'head3'],
- ['日本語1', '日本語2', '日本語3'],
- ['2cont1','2cont2\r\nnext', 'test,Test']
- ];
- var jsonData=[
- {"id":1,"contents":"test,method","property":"mining"},
- {"id":2,"contents":"test\n改行","property":"元からの日本語"},
- {"id":3,"contents":"test,method","property":"mining"}
- ];
- function getCsvStringFromJson(json){
- var csvHeader = [];
- var isSetHeader = false;
- var csvStr = "";
- json.forEach(function(arr){
- if (!isSetHeader){
- for (var key in arr){
- csvHeader.push(key);
- csvStr += key + ",";
- }
- isSetHeader = true;
- } else {
- csvHeader.forEach(function(key){
- if (!arr[key]){
- csvStr += ","
- } else {
- var str = arr[key];
- if (/\n|,/.test(str)){ //正規表現での改行カンマの確認
- str = '"'+str+'"';
- }
- csvStr += str + ","
- }
- });
- }
- csvStr = csvStr.substring(0,csvStr.length-1);
- csvStr += "\n";
- });
- csvStr = csvStr.substring(0,csvStr.length-1);
- return csvStr;
- }
- function getCsvString(arr){
- var csvStr = "";
- arr.forEach(function(rowArr){
- rowArr.forEach(function(str){
- if (/\n|,/.test(str)){
- str = '"'+str+'"';
- }
- csvStr += str+","
- });
- csvStr = csvStr.substring(0,csvStr.length-1);
- csvStr += "\n";
- });
- csvStr = csvStr.substring(0,csvStr.length-1);
- return csvStr;
- }
- function getCSVfile(){
- // var csv = getCsvString(data);
- var csv = getCsvStringFromJson(jsonData)
- var csvName = document.getElementById("csvFileName").getAttribute("value");
- var link = document.createElement('a');
- var bom = new Uint8Array([0xEF, 0xBB, 0xBF]);
- var blob;
- if (window.navigator.msSaveOrOpenBlob) {
- // for ie
- blob = new Blob([bom, csv], {type: 'text/csv'});
- window.navigator.msSaveOrOpenBlob(blob, csvName);
- } else if (window.webkitURL && window.webkitURL.createObjectURL) {
- // for chrome (and safari)
- blob = new Blob([bom, csv], {type: 'text/csv'});
- link.setAttribute('download', csvName);
- link.setAttribute('href', window.webkitURL.createObjectURL(blob));
- link.click();
- } else if (window.URL && window.URL.createObjectURL) {
- // for firefox
- blob = new Blob([bom, csv], {type: 'text/csv'});
- link.setAttribute('download', csvName);
- link.setAttribute('href', window.URL.createObjectURL(blob));
- link.click();
- }
- }
- </script>
Add Comment
Please, Sign In to add comment