jq html table 转 csv,jQuery Table2CSV插件(表格转CSV) 完美支持colspan和rowspan

table2csv:将表格转化为csv数据

参数:一个JSON对象

{

'repeatChar':'拆分单元格填充字符', //默认为null则将单元格值填充到拆分的每个单元格中,如果给定字符串则用给定字符串填充

'callback':'回调函数'  //传入两个参数(csv,data),分别为csv字符串和data二维数组

}

(function($){

$.fn.table2csv=function(option){

if(option==null) option={};

if(option.repeatChar=='') option.repeatChar="-";

//计算行数列数

var rows=0;//行

var cols=0;//列

this.find("tr").each(function(){

rows+=1;

var tr=$(this);

var n=tr.find("td,th").length;

cols=Math.max(cols,n);

});

//document.title=("行/列:"+rows+"/"+cols);

//空数组准备

var data=new Array();

for(var i=0;i

var line=new Array();

for(var j=0;j

line.push('');

data.push(line);

}

//数据填充

var i=0;//当前行坐标

this.find("tr").each(function(){

var tr=$(this);

var j=0;//当前列坐标

tr.find("td,th").each(function(){

var td=$(this);

var colspan=1;

var rowspan=1;

var value=td.text();

if(td.attr("colspan")!=null) colspan=parseInt(td.attr("colspan"));

if(td.attr("rowspan")!=null) rowspan=parseInt(td.attr("rowspan"));

//定位CSV数组中第一个没有数据的单元格

for(var p=0;p

if(data[i][p]==''){ j=p; break; }

}

data[i][j]=value;//填充值

if(colspan+rowspan==2) return; //如果不是合并单元格,返回并继续each

//填充单元格区域

var fic=i+rowspan; //alert(value+i+":"+j);

for(var fi=i;fi

var fjc=j+colspan; //alert(""+j+"\r\n"+fic+":"+fjc);

for(var fj=j;fj

if((fj==j)&&(fi==i)) continue;

data[fi][fj]= (option.repeatChar==null)? value :option.repeatChar; //alert(test(data));

}

}

});

i++;

});

//填充完毕

//生成调试数据

var str="";

for(var i in data){

str+=data[i].join(",");

str+="\r\n";

}

if(option.callback!=null) option.callback(str,data);

};

/

$.fn.csv2table=function(param){

var isarray=param instanceof Array;

var data=null;

if(isarray)//数组直接用

data=param;

else{//csv字符串则转为数组

data=new Array();

var lines=param.split('\r\n');

for(var i=0;i

var cells=lines[i].split(',');

data.push(cells);

}

}

var table="

for(var i=0;i

table+="

";

var cells=data[i];

for(var j=0;j

table+=("

"+cells[j]+"");

table+="

";

}

table+="

";

table+=(isarray?"":"");

this.html(table);

}

})(jQuery);

测试界面(将表格中的内容转为csv,然后再将csv生成为第二个表格):

6edbb041e1a9942efe3b7797b4a2e8e5.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值