exel复制粘贴内容生成表格,相同项合并
2017-04-26 11:08
183 查看
------------HTML
<div id='pasteDiv'>
<textarea id='textArea' class='form-control' placeholder='请复制粘贴excel的内容' style=''></textarea><!--textarea在一行可以预防输入bug-->
</div>
---------------JS
$("body").keydown(function () { cellkeydown(event); });
//excel复制粘贴 function cellkeydown(event) { if (event.ctrlKey) { //获取当前焦点元素 var target = document.activeElement; if(target.id=="textArea"){ var ss= document.getElementById("textArea"); // 等50毫秒,keyPress事件发生了再去处理数据 if (event.ctrlKey && event.keyCode == 86) { ss.focus(); ss.select(); setTimeout("dealwithData()",50); } } } }
//对复制的表格内容进行处理
function dealwithData(event) { var tableBodytr=""; var ss = document.getElementById("textArea"); ss.blur(); var content=ss.value; if (content!=null) { var valArray = content.split("\n"); var selectSeries=Number($("#selectSeries").val()); var series="",seriesTd=""; var seriesLength=valArray[0].split("\t").length; var xuanLength=0,developLength=0; var numberSeries=0; for(var num=0;num<seriesLength;num++){ if(valArray[0].split("\t")[num]=="楦数"||valArray[0].split("\t")[num]=="开发量"||valArray[0].split("\t")[num]=="款式"){ numberSeries=num; break; } } console.log(numberSeries); if(numberSeries!=selectSeries){ swal({ title:"您的数据长度复制有误,请重新粘贴" },function () { $("#textArea").val(""); }); }else{ for(var j=0;j<seriesLength;j++){ series+="<th style='width: 300px'>"+valArray[0].split("\t")[j]+"</th>"; if(valArray[0].split("\t")[j]=="楦数"){ xuanLength=j; } if(valArray[0].split("\t")[j]=="开发量"||valArray[0].split("\t")[j]=="款式"){ developLength=j; } } if(developLength==0){ swal({ title:"复制时必须复制表头" },function () { $("#textArea").val(""); }); }else{ $("#pasteDiv").html("<tabel class='tableData table table-bordered' id='tableProcess' cellpadding='0' cellspacing='0' style='table-layout: fixed;width:100%'&g fc77 t;"); $("#tableProcess").html($("<thead><tr>"+series+"</tr></thead>" + "<tbody id='tableBody'></tbody>")); for(var nRow=1;nRow < valArray.length-1;nRow++) { tableBodytr+="<tr row='"+nRow+"'>"; (function(nRow){ var valArray1 = valArray[nRow].split("\t"); for(var index=0;index < valArray1.length;index++) { //针对具体数据的处理逻辑 if(selectSeries==valArray1.length-2){ if(index==xuanLength){ tableBodytr+="<td style='width: 300px;border: 1px solid #ddd;' col='"+index+"'><input type='text' class='xuanNumber' value='"+valArray1[index]+"'/></td>"; }else if(index==developLength){ tableBodytr+="<td style='width: 300px;border: 1px solid #ddd;' col='"+index+"'><input type='text' class='developNumber' value='"+valArray1[index]+"'/></td>"; }else{ tableBodytr+="<td style='width: 300px;border: 1px solid #ddd;' col='"+index+"'>"+valArray1[index]+"</td>"; } }else{ if(index==valArray1.length-1){ tableBodytr+="<td style='width: 300px;border: 1px solid #ddd;' col='"+index+"'><input type='text' class='developNumber' value='"+valArray1[index]+"'/></td>"; }else{ tableBodytr+="<td style='width: 300px;border: 1px solid #ddd;' col='"+index+"'>"+valArray1[index]+"</td>"; } } } })(nRow); tableBodytr+="</tr>"; } $("#tableBody").html(tableBodytr); console.log($("#tableProcess tr").length); //获取总的开发量 var developNumberTotal=0; $(".developNumber").each(function () { developNumberTotal+=Number($(this).val()); }); $("input[name='planCount']").val(developNumberTotal.toFixed(0)); merge("tableProcess",0);//相同表格合并 //当款式改变时,开发总量改变 $("#tableBody .developNumber").change(function () { var that=$(this); var total=0; $("#tableBody .developNumber").each(function () { var thatCount=$(this); total+=Number(thatCount.val()); }); $("input[name='planCount']").val(total); }); } } } }
//表格合并
function merge(tableId,c){ var tr = $("#"+tableId); for(var col=c;col<$("#selectSeries").val();col++){ for(var i=1;i<tr.find("tr").length; i++){ //表示数据内容的第二行 if(tr.find("tr:eq("+i+")").find("td:eq("+col+")").html() == tr.find("tr:eq("+(i-1)+")").find("td:eq("+col+")").html()){//col代表列 var t = i-1;//上一行 while(tr.find("tr:eq("+i+")").find("td:eq("+col+")").html() == tr.find("tr:eq("+t+")").find("td:eq("+col+")").html()){ if(col>0){ var flagNumber=0; for(var z=0;z<col;z++){ var lastRowlastSpan=tr.find("tr:eq("+i+")").find("td:eq("+z+")").html();//获取上一列上一行的值 var lastRownewSpan=tr.find("tr:eq("+t+")").find("td:eq("+z+")").html();//获取上一列下一行的值,如果两个值相等,合并,不相等不合并 if(lastRowlastSpan==lastRownewSpan){ flagNumber++; } } if(flagNumber==col){ tr.find("tr:eq("+i+")").find("td:eq("+col+")").css("display","none"); var rowSpan=tr.find("tr:eq("+t+")").find("td:eq("+col+")").attr("rowspan");//上一行 if(rowSpan==undefined){ rowSpan=1; } if(rowSpan <= (i-t)){ tr.find("tr:eq("+t+")").find("td:eq("+col+")").attr("rowspan",Number(rowSpan)+1); } }else{ t=i; } } else{ tr.find("tr:eq("+i+")").find("td:eq("+col+")").css("display","none"); var rowSpan=tr.find("tr:eq("+t+")").find("td:eq("+col+")").attr("rowspan");//上一行 if(rowSpan==undefined){ rowSpan=1; } if(rowSpan <= (i-t)){ tr.find("tr:eq("+t+")").find("td:eq("+col+")").attr("rowspan",Number(rowSpan)+1); } } i++; if(i>=tr.find("tr").length){ break; } } } } } }注:该excel复制只能复制excel的文本信息,不能获取到excel内的样式,如颜色,背景色等等
相关文章推荐
- 利用table动态生成表格并填充内容/和panel做一个可控制显示/隐藏的小玩意
- 网页内容无法复制粘贴
- VC6复制粘贴中文内容出现乱码的解决办法
- 在vi中复制粘贴整行内容【UNIX晓习笔记】
- 解决itext-rtf.jar 对html转换后生成rtf文档 其中表格行列合并的问题
- 不再为DataGrid生成的表格的单无格中的内容过长、自动折行、表格撑开等问题而烦恼----一个很久以前的做品
- Clipboard:无需粘贴复制的剪贴板,轻松分享网站内容
- 不再为DataGrid生成的表格的单无格中的内容过长、自动折行、表格撑开等问题而烦恼
- php动态生成表格的合并
- ASP.net中动态生成表格/文本框以及获取文本框内容的方法
- 根据要显示的字段个数动态生成表格标签table及内容
- 用js实现的一个根据内容自动生成表格的函数
- 用js实现的一个根据内容自动生成表格的函数
- excel表格中,公式生成的数据如何复制到另一个工作簿中?
- freetextbox中粘贴从word中复制的内容出错解决办法
- 网页内容无法复制粘贴
- web页面中如果想让用户复制页面内容粘贴时加入一些自定义信息
- Java右键菜单实现文本组件内容的的复制、粘贴、剪切功能
- C#粘贴复制数据库中的内容
- 复制,粘贴文本框的内容