標籤:blog http io java ar for 資料 sp div
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<rows;i++){var line=new Array();for(var j=0;j<cols;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<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=null;if(isarray)//數組直接用data=param;else{//csv字串則轉為數組data=new Array();var lines=param.split(‘\r\n‘);for(var i=0;i<lines.length;i++){ var cells=lines[i].split(‘,‘);data.push(cells);}}var table="<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