您的位置:首页 > 其它

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内的样式,如颜色,背景色等等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: