📄 excelpage.aspx
字号:
function getscol()
{
return scol;
}
function getecol()
{
return ecol;
}
function getsrow()
{
return srow;
}
function geterow()
{
return erow;
}
function readfile()
{
scol = this.xscol;
//alert(scol);
srow = this.xsrow;
//alert(srow);
ecol = this.xecol;
//alert(ecol);
erow = this.xerow;
//alert(erow);
}
//合并单元格
function unitTD()
{
var delobjs = new Array();//存放需要删除的对象
var n=0;//记录删除的格数
var myobj = tbs.get(srow+'-'+scol);//得到选择的起始行和起始列的值,作为其他选种格子的值
var currow = myobj.row;
var curcol = myobj.col;
var unitvalue = srow+'.'+scol+'.'+erow+'.'+ecol;//当前合并的起始行和起始列
for(var i = srow; i<=erow; i++)
for(var j = scol; j<=ecol; j++)
{
var key = i + '-' + j;
var changeobj = tbs.get(key);
if(unitcells.containsKey(key))
{
//说明曾经删除过
unitcells.remove(key);
}
if(!changeobj.merge)
{
delobjs[n++] = tbobj.rows[changeobj.row].cells[changeobj.col];
}
//第一个不放入进去,同时第一个的merge属性为false
unitcells.put(i+'-'+j , unitvalue);
if(i!=srow||j!=scol)
{
changeobj.merge = true;
}
changeobj.row = currow;
changeobj.col = curcol;
}
//修改后面的列值
changehashcolvalue();
for(var i=1; i<delobjs.length; i++)
{
delobjs[i].childNodes[0].removeNode();
delobjs[i].removeNode();
}
delobjs[0].colSpan = ecol-scol + 1;
delobjs[0].rowSpan = erow-srow + 1;
//隐藏右键菜单
oPopup.hide();
GetMaxColRow(erow,ecol);
}
//修改哈稀表中的col的值
function changehashcolvalue()
{
for(var i = srow; i<=erow; i++)
{
var flag = true;
var mercolnum = 0;//第一行合并了多少列
var procolnum = 0;//当前行从当前列算起的前一个有列号的列序号
//倒数过去,当前行第一个有列号的cell对象
for(var j = scol-1; j>0; j--)
{
var key = i+'-'+j
var objpro = tbs.get(key);
if(objpro.merge)
{
//说明此行此列在现实表中不存在
continue;
}
else
{
procolnum = tbobj.rows[objpro.row].cells[objpro.col].cellIndex;
break;
}
}
//修改列值?
for(var j = ecol+1; j<= tablecol; j++)
{
var key = i + '-' + j;
var changeobj = tbs.get(key);//当前行中,选中对象的一个格子
if(changeobj.merge)
{
//说明此行此列在现实表中不存在
continue;
}
else
{
if(flag)
{
//找第一个
var nextcolnum = tbobj.rows[changeobj.row].cells[changeobj.col].cellIndex;
if(i == srow)
{
mercolnum = nextcolnum - procolnum - 2;
}
else
{
mercolnum = nextcolnum - procolnum - 1;
}
flag = false;
}
var col = changeobj.col - mercolnum;
//判断是否要更新块
if(unitcells.containsKey(key))
{
mendblockvalue(key,col);
}
changeobj.col = col;
}
}
}
}
//修改合并块的列值
function mendblockvalue(key,col)
{
var rowcells = unitcells.get(key);
var values = rowcells.split('.');
var sr = values[0];
var sc = values[1];
var er = values[2];
var ec = values[3];
for(i = sr ;i<=er;i++)
for(j=sc;j<=ec;j++)
{
var changeobj = tbs.get(key);
changeobj.col = col;
}
}
function show()
{
//首先进行鼠标移动的方向判断,并获得起始状态的srowv,scol和erow,ecol
if(this.sy>=this.ey)
{
//向上
getrowcol(true,this.eobj)
//ohoh.innerText = 'srow=' + srow + ',scol=' + scol;
getrowcol(false,this.sobj)
//ohoh1.innerText = 'erow=' + erow + ',ecol=' + ecol;
}
else
{
//向下
getrowcol(true,this.sobj)
//ohoh.innerText = 'srow=' + srow + ',scol=' + scol;
getrowcol(false,this.eobj)
//ohoh1.innerText = 'erow=' + erow + ',ecol=' + ecol;
}
//循环找出要覆盖的区域
var searchflag = true;
while(searchflag)
{
searchflag = getcellobj();
}
var scellobj = tbs.get(srow+'-'+scol);
var ecellobj = tbs.get(erow+'-'+ecol);
var left = fnGetPosition(tbobj.rows[scellobj.row].cells[scellobj.col],'Left');
var top = fnGetPosition(tbobj.rows[scellobj.row].cells[scellobj.col],'Top');
var right = fnGetPosition(tbobj.rows[ecellobj.row].cells[ecellobj.col],'Right');
var bottom = fnGetPosition(tbobj.rows[ecellobj.row].cells[ecellobj.col],'Bottom');
hehe.style.left = left;
hehe.style.top = top;
hehe.style.width = right - left;
hehe.style.height = bottom - top;
hehe.style.display = '';
}
function getrowcol(kind,cellobj)
{
while(cellobj!=null)
{
if(cellobj.tagName == "TD")
{
var parentobj = cellobj.parentElement;
var colspan = getmergecolnum(parentobj.rowIndex,cellobj.cellIndex);
if(kind)
{
//ohoh2.innerText ="row:"+cellobj.parentElement.rowIndex+",col:"+ cellobj.cellIndex+",colspan:"+colspan;
srow = parentobj.rowIndex;
scol = cellobj.cellIndex+colspan;
}
else
{
erow = parentobj.rowIndex+cellobj.rowSpan-1;
ecol = Number(cellobj.cellIndex)+cellobj.colSpan-1+Number(colspan);//要加上自身的列数
}
//if(erow == 31 || ecol == 11) safafd;
return;
}
cellobj = cellobj.parentElement;
}
}
//确定选择范围
function getcellobj()
{
if(scol>ecol){var temp=0; temp = scol; scol = ecol; ecol = temp; }
for(var i = srow; i<=erow; i++)
{
for(var j = scol; j<=ecol; j++)
{
var checkobj = tbs.get(i + '-' + j);
if(i==srow||i==erow)//说明检查的是第一行或者最后一行
{
if(geteffectrowcol(checkobj,i,j))
return true;
}
else//检查中间的行
{
if(j==scol||j==ecol)
{
if(geteffectrowcol(checkobj,i,j))
return true;
}
else
{
continue;
}
}
}
}
return false;
}
//得到当前合并格子所影响的行和列
function geteffectrowcol(checkobj,row,col)
{
var currow = checkobj.row;//当前实际操作的行
var curcol = checkobj.col;//当前实际操作的列
var reloadflag= false;
//ohoh3.innerText = "aaaaa:"+currow+','+curcol;
//tbobj.rows[currow].cells[curcol].colSpan==1胡耀2007-11-16号修改
if(checkobj.merge == false&&tbobj.rows[currow].cells[curcol].colSpan==1)//说明没有合并
{
return reloadflag;
}
else
{
//+Number(tbobj.rows[currow].cells[curcol].colSpan)-1胡耀2007-11-16号修改
var colnum = getmergecolnum(currow,curcol)+Number(tbobj.rows[currow].cells[curcol].colSpan)-1;
if(currow>erow)
{
erow = currow;
reloadflag = true;
}
if(currow<srow)
{
srow = currow;
reloadflag = true;
}
if(Number(curcol)+colnum>ecol)
{
ecol = curcol+colnum;
reloadflag = true;
}
if(Number(curcol)+colnum<scol)
{
scol = curcol+colnum;
reloadflag = true;
}
return reloadflag;
}
}
//获得某一行的某一列之前合并了多少列
function getmergecolnum(row,col)
{
var n=col;
for(;n<=tablecol;n++)
{
var obj = tbs.get(row+'-'+n);
if(obj.row == row&&obj.col == col)
break;
}
return n-col;
}
//*************************边框***************************
function drawNet()//网
{
for(var i = srow; i<=erow; i++)
for(var j = scol; j<=ecol; j++){
var obj = tbs.get(i+'-'+j);
//tbobj.rows[obj.row].cells[obj.col].className = "nettd";
if(scol ==1)
tbobj.rows[obj.row].cells[obj.col].style.borderColor = 'white ' + this.lineColor + ' ' + this.lineColor + ' ' + this.lineColor;
else
tbobj.rows[obj.row].cells[obj.col].style.borderColor = 'white ' + this.lineColor + ' ' + this.lineColor + ' white';
}
this.drawTopLine();
this.drawLeftLine();
}
function drawNone()//无
{
for(var i = srow; i<=erow; i++)
for(var j = scol; j<=ecol; j++){
var obj = tbs.get(i+'-'+j);
//tbobj.rows[obj.row].cells[obj.col].className = "";//??是否会用上面的
tbobj.rows[obj.row].cells[obj.col].style.borderColor = 'white #ADD8E6 #ADD8E6 white';
}
if( srow-1 > 0){var i=srow-1;
for(var j = scol; j<=ecol; j++)
{
var obj = tbs.get(i+'-'+j);
//tbobj.rows[obj.row].cells[obj.col].className = "bottomtd";
tbobj.rows[obj.row].cells[obj.col].style.borderBottomColor = '#ADD8E6';
}
}
if( scol-1 > 0){var j=scol-1;
for(var i = srow; i<=erow; i++)
{
var obj = tbs.get(i+'-'+j);
//tbobj.rows[obj.row].cells[obj.col].className = "righttd";
tbobj.rows[obj.row].cells[obj.col].style.borderRightColor = '#ADD8E6';
}
}
}
function drawRect() //框
{
this.drawTopLine();
this.drawBottomLine();
this.drawLeftLine();
this.drawRightLine();
}
function drawTopLine() //上边
{
if( srow-1 >= 0){var i = srow-1;
for(var j = scol; j<=ecol; j++)
{
var obj = tbs.get(i+'-'+j);
//tbobj.rows[obj.row].cells[obj.col].className = "bottomtd";
tbobj.rows[obj.row].cells[obj.col].style.borderBottomColor = this.lineColor;
//tbobj.rows[obj.row].cells[obj.col].className = "notd";
}
}
}
function drawBottomLine() //下边
{
for(var j = scol; j<=ecol; j++){
var obj = tbs.get(erow+'-'+j);
//tbobj.rows[obj.row].cells[obj.col].className = "bottomtd";
tbobj.rows[obj.row].cells[obj.col].style.borderBottomColor = this.lineColor;
}
}
function drawLeftLine() //左边
{
var obj = null;
if(scol ==1)
tbobj.rows[srow].cells[1].style.borderColor = 'white ' + this.lineColor + ' ' + this.lineColor + ' ' + this.lineColor;
if( scol-1 > 0){
var j=scol-1;
for(var i = srow; i<=erow; i++)
{
obj = tbs.get(i+'-'+j);
//tbobj.rows[obj.row].cells[obj.col].className = "righttd";
tbobj.rows[obj.row].cells[obj.col].style.borderRightColor = this.lineColor;
}
}
}
function drawRightLine() //右边
{
for(var i = srow; i<=erow; i++){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -