📄 fcrep.js
字号:
if(jjj>=t.rows(i+1).cells.length) break
var c=parseInt(t.rows(i+1).cells(jjj).colSpan)
if (isNaN(c)) c=1
addCols=addCols+c-1
}
//if (i==2) alert("j="+j+" "+addCols)
curAddCell=t.rows(i+1).insertCell(j-addCols)
//生成的单元格应保存初始合并单元格的td row,col
curAddCell.setAttribute("tdRow",td_row)
curAddCell.setAttribute("tdCol",td_col)
//curAddCell.innerText="R="+td_row+" C="+td_col
curAddCell.innerText=curTD.innerText
curAddCell.colSpan=lngCols
curAddCell.rowSpan=lngRows-1
//curAddCell.innerText="A"
}
} //列循环结束
} //行循环结束
// var d=new Date()
// var t1=d.getTime()
// alert(t1-t2)
}
//*****************************************************************************************
//处理合并 end
//*****************************************************************************************
function show(val) {
txt1.style.display ="block"
txt1.style.zIndex =2
txt1.value =val
}
function CellPoint(curTD,v) {
//向单元格给值时处理小数位数
//curTD为要处理的单元格, v为要给的值
var v1=parseFloat(v)
if(isNaN(v1)==false){
//小数位数
var s1=curTD.getAttribute("pointnum")
if(s1!=null){
s1=parseInt(s1)
curTD.innerText=ContDec(v1,s1)
}
else {
curTD.innerText=v
}
}
else {
curTD.innerText=v
}
}
//*****************************************************************************************
//处理grid事件
//*****************************************************************************************
function grid_onVscroll() {
if(tc.style.display=="block"){
//show(sCol+" "+sRow+" "+eCol+" "+eRow)
//此处暂时用物理位置,到时要变成逻辑位置
var arr=PhyToLog(sRow,sCol)
var arr1=PhyToLog(eRow,eCol)
var tdStart=t.rows(arr[0]).cells(arr[1])
var tdEnd=t.rows(arr1[0]).cells(arr1[1])
//sLeft=tdStart.offsetLeft
sTop=tdStart.offsetTop
//sWidth=tdStart.offsetWidth
sHeight=tdStart.offsetHeight
//eLeft=tdEnd.offsetLeft
eTop=tdEnd.offsetTop
//eWidth=tdEnd.offsetWidth
eHeight=tdEnd.offsetHeight
//alert(sLeft+"=="+eLeft+" "+sTop+"=="+eTop)
showBlueRect()
}
}
function grid_onHscroll() {
if(tc.style.display=="block"){
//show(sCol+" "+sRow+" "+eCol+" "+eRow)
//此处暂时用物理位置,到时要变成逻辑位置
var arr=PhyToLog(sRow,sCol)
var arr1=PhyToLog(eRow,eCol)
var tdStart=t.rows(arr[0]).cells(arr[1])
var tdEnd=t.rows(arr1[0]).cells(arr1[1])
sLeft=tdStart.offsetLeft
//sTop=tdStart.offsetTop
sWidth=tdStart.offsetWidth
//sHeight=tdStart.offsetHeight
eLeft=tdEnd.offsetLeft
//eTop=tdEnd.offsetTop
eWidth=tdEnd.offsetWidth
//eHeight=tdEnd.offsetHeight
showBlueRect()
}
}
//*****************************************************************************************
//处理grid事件 end
//*****************************************************************************************
//*****************************************************************************************
//增删行列
//*****************************************************************************************
function InsRow(){
if(grid.ReadOnly) return
if (tc.style.display =="none" ) return
SaveoUndoOneRecord()
var minRow
if (sRow>eRow)
minRow=eRow
else
minRow=sRow
var iRows=Math.abs(eRow-sRow)
MoveFormula(minRow,iRows+1,1)
for(var i=0;i<=iRows;i++){
// grid.InsertRow(minRow)
//---------插入行
var tdCount=0 //记录此行共要插多少个TD
for (j=0;j<=t.rows(0).cells.length-1;j++){
//i,minCol单元的坐标换成逻辑坐标找到TD,判断
//如rowspan>1则i=i+rowspan-1,此TD的colspan>1则colspan=colspan-1,
//如果colspan=1则删除此TD
var arr=PhyToLog(minRow,j)
var curTD=t.rows(arr[0]).cells(arr[1])
if(minRow==arr[0] || (curTD.rowSpan==1 && curTD.colSpan==1)){
// alert(arr[0]+","+arr[1])
//t.rows(minRow).insertCell()
tdCount++
}
else { //从合并单元的半中间插入
if(curTD.colSpan>1){
j=j+curTD.colSpan-1
}
if(curTD.rowSpan>1){
curTD.rowSpan=curTD.rowSpan+1
}
}
}
//按照计算好的TD个数插入行
var oTr=t.insertRow(minRow)
oTr.style.height=21
for(j=0;j<tdCount;j++){
t.rows(minRow).insertCell();
}
//---------
}
//理顺行标
for (i=minRow;i<=t.rows.length-1;i++){
t.rows(i).cells(0).innerText=i
}
// txtMyGrid.style.top=txtMyGrid.style.pixelTop-(iRows+1)*21 //per row height=21
CopytHtml()
var arr=PhyToLog(sRow,sCol)
var moveTD=t.rows(arr[0]).cells(arr[1])
grid.moveedit(moveTD)
showBlueScale(sRow,sCol,eRow,eCol)
//从单元属性中将公式及预处理过后的公式装入oFormula中
LoadAllFormula()
//强制表格宽高同步
if(grid.autosize){
grid.autosize=true
}
SaveoRedoOneRecord()
blnChange=true
}
function DelRow(){
if(grid.ReadOnly) return
if (tc.style.display =="none" ) return
//var lngStatus=SelStatus(sRow,sCol,eRow,eCol)
//if(lngStatus==2 || lngStatus==5 ) return
SaveoUndoOneRecord()
var minRow
if (sRow>eRow)
minRow=eRow
else
minRow=sRow
//如选择的兰框在最边上,则删除列后不再显示兰框
if(eRow==t.rows.length-1 || sRow==t.rows.length-1 ){
if(minRow==1){
alert("不能全部删除!")
return
}
}
clearBlueScale()
var iRows=Math.abs(eRow-sRow)
MoveFormula(minRow,-(iRows+1),1)
for(var i=0;i<=iRows;i++){
// grid.DeleteRow(minRow)
//---------列删除
// t.children[0].removeChild(t.children[0].children[minCol])
//固定行不能删除
//if(t.childNodes(0).childNodes.length<=lngFixCols )return
for (j=t.rows(0).cells.length-1;j>=0;j--){
//i,minCol单元的坐标换成逻辑坐标找到TD,判断
//如rowspan>1则i=i+rowspan-1,此TD的colspan>1则colspan=colspan-1,
//如果colspan=1则删除此TD
var arr=PhyToLog(minRow,j)
var curTD=t.rows(arr[0]).cells(arr[1])
if(curTD.rowSpan==1 && curTD.colSpan==1){
//
t.rows(arr[0]).deleteCell(arr[1])
}
else {
if(curTD.colSpan>1){
j=j-curTD.colSpan+1
}
if(curTD.rowSpan>1){
//alert(arr[0]+","+arr[1])
//如当前单元是合并单元的主单元格则合并单元下移
if (arr[0]==minRow){
var tdNode=t.rows(arr[0]).cells(arr[1]).cloneNode(true)
var iInsCol=PhyToLogCol(minRow+1,j)
t.rows(minRow+1).insertCell(iInsCol)
t.rows(minRow+1).cells(iInsCol).replaceNode(tdNode)
t.rows(minRow+1).cells(iInsCol).rowSpan=curTD.rowSpan-1
t.rows(arr[0]).deleteCell(arr[1])
}
else{
curTD.rowSpan=curTD.rowSpan-1
}
}
else if(curTD.rowSpan==1){
t.rows(arr[0]).deleteCell(arr[1])
}
}
}
t.deleteRow(minRow)
//-----------------
}
//理顺行标
for (i=minRow;i<=t.rows.length-1;i++){
t.rows(i).cells(0).innerText=i
}
CopytHtml()
if(tc.style.display=="block"){
var arr=PhyToLog(sRow,sCol)
var moveTD=t.rows(arr[0]).cells(arr[1])
grid.moveedit(moveTD)
showBlueScale(sRow,sCol,eRow,eCol)
}
//从单元属性中将公式及预处理过后的公式装入oFormula中
LoadAllFormula()
//强制表格宽高同步
if(grid.autosize){
grid.autosize=true
}
SaveoRedoOneRecord()
blnChange=true
}
function InsCol(){
if(grid.ReadOnly) return
if (tc.style.display =="none" ) return
SaveoUndoOneRecord()
var minCol
if (sCol>eCol)
minCol=eCol
else
minCol=sCol
var iCols=Math.abs(eCol-sCol)
MoveFormula(minCol,iCols+1)
for(var i=0;i<=iCols;i++){
// grid.InsertCol(minCol)
//---------列插入
var o=document.createElement("COL")
o.style.width=70
var iPos=t.childNodes(0).childNodes.length-1
if (iPos>minCol)
iPos=minCol
t.children[0].insertBefore(o,t.children[0].children[iPos])
//固定行不能删除
//if(t.childNodes(0).childNodes.length<=lngFixCols )return
for (j=0;j<=t.rows.length-1;j++){
//i,minCol单元的坐标换成逻辑坐标找到TD,判断
//如rowspan>1则i=i+rowspan-1,此TD的colspan>1则colspan=colspan-1,
//如果colspan=1则删除此TD
var arr=PhyToLog(j,minCol)
var curTD=t.rows(arr[0]).cells(arr[1])
if(curTD.rowSpan==1 && curTD.colSpan==1){
// alert(arr[0]+","+arr[1])
t.rows(arr[0]).insertCell(arr[1])
}
else {
if(curTD.rowSpan>1){
j=j+curTD.rowSpan-1
}
if(curTD.colSpan>1){
curTD.colSpan=curTD.colSpan+1
}
//else if(curTD.colSpan==1){
// t.rows(arr[0]).deleteCell(arr[1])
//}
}
}
//-----------------
}
//理顺行标
for (i=minCol;i<=t.rows(0).cells.length-1;i++){
t.rows(0).cells(i).innerText=IntToLbl(i)
}
CopytHtml()
var arr=PhyToLog(sRow,sCol)
var moveTD=t.rows(arr[0]).cells(arr[1])
grid.moveedit(moveTD)
showBlueScale(sRow,sCol,eRow,eCol)
//从单元属性中将公式及预处理过后的公式装入oFormula中
LoadAllFormula()
//强制表格宽高同步
if(grid.autosize){
grid.autosize=true
}
SaveoRedoOneRecord()
blnChange=true
}
function DelCol(){
if(grid.ReadOnly) return
if (tc.style.display =="none" ) return
//var lngStatus=SelStatus(1,sCol,t.rows.length-1,eCol)
//alert(lngStatus)
//if(lngStatus==2 || lngStatus==5 ) return
SaveoUndoOneRecord()
var minCol
if (sCol>eCol)
minCol=eCol
else
minCol=sCol
//如选择的兰框在最边上,则删除列后不再显示兰框
if(eCol==t.rows(0).cells.length-1 || sCol==t.rows(0).cells.length-1 ){
if(minCol==1){
alert("不能全部删除!")
return
}
}
clearBlueScale()
var iCols=Math.abs(eCol-sCol)
MoveFormula(minCol,-(iCols+1))
for(var i=0;i<=iCols;i++){
// grid.DeleteCol(minCol)
//---------列删除
t.children[0].removeChild(t.children[0].children[minCol])
//固定行不能删除
//if(t.childNodes(0).childNodes.length<=lngFixCols )return
for (j=0;j<=t.rows.length-1;j++){
//i,minCol单元的坐标换成逻辑坐标找到TD,判断
//如rowspan>1则i=i+rowspan-1,此TD的colspan>1则colspan=colspan-1,
//如果colspan=1则删除此TD
var arr=PhyToLog(j,minCol)
var curTD=t.rows(arr[0]).cells(arr[1])
if(curTD.rowSpan==1 && curTD.colSpan==1){
// alert(arr[0]+","+arr[1])
t.rows(arr[0]).deleteCell(arr[1])
}
else {
if(curTD.rowSpan>1){
j=j+curTD.rowSpan-1
}
if(curTD.colSpan>1){
curTD.colSpan=curTD.colSpan-1
}
else if(curTD.colSpan==1){
t.rows(arr[0]).deleteCell(arr[1])
}
}
}
//-----------------
}
//理顺行标
for (i=minCol;i<=t.rows(0).cells.length-1;i++){
t.rows(0).cells(i).innerText=IntToLbl(i)
}
CopytHtml()
if(tc.style.display=="block"){
var arr=PhyToLog(sRow,sCol)
var moveTD=t.rows(arr[0]).cells(arr[1])
grid.moveedit(moveTD)
showBlueScale(sRow,sCol,eRow,eCol)
}
//从单元属性中将公式及预处理过后的公式装入oFormula中
LoadAllFormula()
//强制表格宽高同步
if(grid.autosize){
grid.autosize=true
}
SaveoRedoOneRecord()
blnChange=true
}
//*****************************************************************************************
//增删行列 end
//*****************************************************************************************
//*****************************************************************************************
//常用函数
//*****************************************************************************************
function IntToLbl(colno)
{//1--->A由索引号取得字母
var strLbl="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var inx=parseInt(colno/26)
if (inx>26)
return
var strPrefix=strLbl.substring(inx-1,inx)
var strColLbl=strLbl.substring(colno-inx*26-1,colno-inx*26)
return strPrefix+strColLbl
}
function LblToInt(strC){
//A--->1由字母取得索引号,只支持最大长度为2的strS
var strLbl="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var inx=strC.length
var iCol
if (inx==1)//一个字母
iCol=strLbl.indexOf(strC)+1
else//两个字母
{
iCol=(strLbl.indexOf(strC.substring(0,1))+1)*26+strLbl.indexOf(strC.substring(1,2))+1
}
return iCol
}
function TransAto1(strLbl){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -