exel复制粘贴内容生成表格,相同项合并

------------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%'>");
                $("#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内的样式,如颜色,背景色等等



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值