摘要:
最近有一个非项目的小需求,就是将项目开发分工文件化,方便后期管理维护。但是开发时,分工安排都是以json格式记录的,所以就做了一个将json数据以csv格式下载到本地。
代码:
复制代码 代码如下:
download csv
>http://code.jquery.com/jquery-1.11.0.min.js>>
enter json data
[{vehicle:bmw,date:30 jul 2013 09:24 am,location:hauz khas,speed:42},{vehicle:honda cbr,date:30 jul 2013 12:00 am,location:military road,speed:0},{vehicle:supra,date:30 jul 2013 07:53 am,location:sec-45,speed:58},{vehicle:land cruiser,date:30 jul 2013 09:35 am,location:dlf phase i,speed:83}]
download csv
download.js
复制代码 代码如下:
$(document).ready(function() {
use strict;
var mo = {
init: function() {
$('.download').click(function() {
var data = $('#txt').val();
if (data === '') {
return;
}
mo.jsontocsvconvertor(data, true);
});
},
jsontocsvconvertor: function(jsondata, showlabel) {
var arrdata = typeof jsondata !== 'object' ? json.parse(jsondata) : jsondata;
var csv = '';
if (showlabel) {
var row = ;
for (var index in arrdata[0]) {
row += index + ',';
}
row = row.slice(0, -1);
csv += row + '\r\n';
}
for (var i = 0; i var row = ;
for (var index in arrdata[i]) {
var arrvalue = arrdata[i][index] == null ? : '=' + arrdata[i][index] + '';
row += arrvalue + ',';
}
row.slice(0, row.length - 1);
csv += row + '\r\n';
}
if (csv == '') {
growl.error(invalid data);
return;
}
var filename = result;
if (mo.msieversion()) {
var iewindow = window.open();
iewindow.document.write('sep=,\r\n' + csv);
iewindow.document.close();
iewindow.document.execcommand('saveas', true, filename + .csv);
iewindow.close();
} else {
var uri = 'data:application/csv;charset=utf-8,' + escape(csv);
var link = document.createelement(a);
link.href = uri;
link.style = visibility:hidden;
link.download = filename + .csv;
document.body.appendchild(link);
link.click();
document.body.removechild(link);
}
},
msieversion: function() {
var ua = window.navigator.useragent;
var msie = ua.indexof(msie );
if (msie > 0 || !!navigator.useragent.match(/trident.*rv\:11\./)) // if internet explorer, return version number
{
return true;
} else { // if another browser,
return false;
}
return false;
},
main: function() {
mo.init();
}
};
mo.main();
});
小结:
注意json格式[{},{}],文件名是在js中定义的变量filename。主要问题是他会自动添加一行空行,且每个元素都会在值前面加个'='。
下载下来的数据格式为: