首页 > 代码库 > jQuery Table2CSV插件(表格转CSV) 完美支持colspan和rowspan

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=http://www.mamicode.com/new Array();"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=http://www.mamicode.com/td.text();"colspan")!=null) colspan=parseInt(td.attr("colspan"));				if(td.attr("rowspan")!=null) rowspan=parseInt(td.attr("rowspan"));				//定位CSV数组中第一个没有数据的单元格 				for(var p=0;p<data[i].length;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<fic;fi++){					var fjc=j+colspan; //alert(""+j+"\r\n"+fic+":"+fjc);					for(var fj=j;fj<fjc;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=http://www.mamicode.com/null;"<table border=‘1‘>";		for(var i=0;i<data.length;i++){			table+="<tr>";			var cells=data[i];			for(var j=0;j<cells.length;j++)				table+=("<td>"+cells[j]+"</td>");			table+="</tr>";		}		table+="</table>";		table+=(isarray?"<!--数组-->":"<!--字串-->");		this.html(table);	}})(jQuery);

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

jQuery Table2CSV插件(表格转CSV) 完美支持colspan和rowspan