| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116 | Namespace.register("U.MD.O.E.RC");/*Excel的右键功能*//***  添加行功能*  checkdCell 被选中的最后一个单元格*  lineNum 行数*  req 当为true的时候 不发送send请求*/U.MD.O.E.RC.addLine = function (checkdCell, lineNum, req) {     //传入参数    var _excel = U.MD.O.E,                                      //声明变量        _cellBox = $(".U_MD_O_E_cellBox")[0],                   //获取表格的最大包        _rBList = U.UF.C.toArray($(".U_MD_O_E_row")),           //所有的行板        _cBList = U.UF.C.toArray($(".U_MD_O_E_column")),        //所有的列板        _cellList = U.UF.C.toArray($(".U_MD_O_E_cell")),        //所有的单元格        _rBBox = $(".U_MD_O_E_rowBoard")[0],                    //行板的父元素        _cellLast = checkdCell,                                 //被选中单元格中的最后一个        _rowNum = _cellLast.row,                                //获取最后一个单元格的所在行数   相当于右键单元格当前所在行        _rBoardCurrent = $(".U_MD_O_E_row")[_rowNum - 1],       //当前选中单元格所对应的行板        _rBoardNext,                                            //当前单元格下一行所对应的行板        _rBLen = _rBList.length,                                //为所以的行板的长度        _rowNext,                                               //当前单元格的下一行的所有元素        _height,                                                //行板的高        _top,                                                   //上边距        _frag = $$("frag"),                                     //声明节点DocumentFragment是一种“轻量级”的文档,可以包含和控制节点,但不会像完整的文档那样占用额外的资源。        _mergeCellList,                                         //当前单元格以下的所有合并的单元格        _newEl,                                                 //单元格        _iRowCell,                                              //第i行的所有单元格        _colName,                                               //单元格的行的属性名        _rowName,                                               //单元格的列的属性名        _newRow,                                                //新添加的行             _newrB,                                                 //为被拷贝的行板        _rowRule,                                               //在单元格指定的元素        _mergeId,        _addHeight,                                             //增加的高度        _mergeChangeArr = [],                                   //为空的数组        i,                                                              j;    if (_rowNum < _rBLen) {                           //如果选中的行不是最后一行         _rBoardNext = $(".U_MD_O_E_row")[_rowNum];    //当前单元格下一行所对应的行板        _rowNext = _cellList.filter(function (el) {   //当前单元格的下一行的所有元素            return +(el.row) === (_rowNum + 1);       //返回值        });        _height = _rBoardNext.offsetHeight;           //行板的高        _top = _rBoardNext.offsetTop;                 //行板的offsetTop值 = 单元格的top    } else {        _rBoardNext = _rBoardCurrent;                 //当前单元格下一行所对应的行板        _rowNext = _cellList.filter(function (el) {   //当前选中行的所有单元格            return +(el.row) === (_rowNum);           //返回值        });        _height = _rBoardCurrent.offsetHeight;        //当前选中单元格所对应的行板的高度        _top = _rBoardCurrent.offsetTop;              //当前选中单元格所对应的行板的上边距    }    _addHeight = _height * lineNum;    _rowNext.forEach(function (el) {                 //for循环遍历当前选中行的所有单元格        _colName = +(el.col);                        //定义变量里面的内容        _rowName = +(el.row);                        //定义变量里面的呢绒        var lineLen;                                 //声明变量        if (_rowNum < _rBLen) {                      //如果选中的行不是最后一行             i = 0;                                   //只遍历到最后一行前面一行            lineLen = lineNum;        } else {            i = 1;            lineLen = lineNum + 1;                   //只从第二行开始遍历        }        var _newEl = el.cloneNode(),                //拷贝循环的结果            _mergeArr,            _mergeEl;        if (el.s_mergerow === _rowName) {         //如果克隆的行数 与最大合并单元格 的行 相同            _mergeId = el.s_merge;                //获取元素            _newEl.style.display = "block";       //表示显示            _newEl.style.height = _height + "px"; //定义高            _newEl.style.width = _cBList[_colName - 1].offsetWidth + "px";//定义宽            $(_newEl).eRmAttr("s_mergecol");      //返回指定元素的属性            $(_newEl).eRmAttr("s_mergerow");            $(_newEl).eRmAttr("e_mergecol");            $(_newEl).eRmAttr("e_mergerow");            $(_newEl).eRmAttr("s_merge");            $(_newEl).eRmAttr("e_merge");        }        if (el.s_merge && _mergeId !== el.s_merge) {        /*合并 且 不是最大的单元格时 _mergeId !== el.s_merge 这句话表示一个大单元格只修改一次属性 */            _mergeId = el.s_merge;                          //声明变量            _mergeEl = $("#" + _mergeId)[0];                //根据参数选择一个对象            _mergeEl.style.height = _mergeEl.offsetHeight + _addHeight + "px";//定义高            _mergeArr = _cellList.filter(function (el) {    //修改合并单元格的 结束位置                return el.s_merge === _mergeId;            });            _mergeArr.forEach(function (el) {               //for循环遍历一开始拷贝的结果                $(el).eAttr("e_mergerow", el.e_mergerow + lineNum);//返回值                $(el).eAttr("e_merge", "POS_" + el.e_mergecol + "_" + el.e_mergerow);            });            var temp = {                col: el.s_mergecol,                row: el.s_mergerow                          //定义数组            };            _mergeChangeArr.push(temp);                     //调用函数        }        for (; i < lineLen; i++) {                          //此处添加新的列榜            _newEl = _newEl.cloneNode();                    //声明变量为拷贝的对象            if (el.s_merge && el.s_mergerow !== _rowName) {    //如果克隆的是非最大单元格的元素                 $(_newEl).eAttr("s_merge", el.s_merge);                $(_newEl).eAttr("s_mergerow", el.s_mergerow);                $(_newEl).eAttr("s_mergecol", el.s_mergecol);                $(_newEl).eAttr("e_mergerow", el.e_mergerow);                $(_newEl).eAttr("e_mergecol", el.e_mergecol);                $(_newEl).eAttr("e_merge", "POS_" + _newEl.e_mergecol + "_" + _newEl.e_mergerow);//返回值            }            _newEl.style.top = _top + _height * i + "px"; //此处为单元格上边距            _newRow = _rowName + i;                       //赋值            $(_newEl).eAttr("row", _newRow);             //返回值            _newEl.col = _colName;            _newEl.id = "POS_" + _colName + "_" + _newRow;            U.MD.O.E.BC.Focus(_newEl);  //添加单元格聚焦事件            U.MD.O.E.BC.dragCheckd(_newEl); //添加拖拽选中事件            _frag.appendChild(_newEl);//生成子节点        }    });    for (i = 0; i < lineNum; i++) {     //此处为添加新的行榜        _newrB = _rBoardNext.cloneNode(true); //声明变量为拷贝的对象,返回正确        _newrB.firstChild.textContent = +(_rBoardCurrent.innerText) + 1;//定义第一个子节点        $(_newrB).eAttr("rowname", +(_rBoardCurrent.innerText) + 1);//返回值        _rowRule = $(_newrB).find(".U_MD_O_E_rowRule");//在单元格里面指定元素        U.MD.O.E.BC.rowExpanding(_rowRule);        U.MD.O.E.BC.rBoardChecked(_newrB); //添加点击 拖拽功能        _excel.After(_rBoardCurrent, _newrB);//返回值        _rBoardCurrent = _newrB;    };    for (i = _rowNum + 1; i <= _rBLen; i++) {      //此处是操作单元格的 使选中行下面的所有行移动位置 与 属性        _rBList[i - 1].firstChild.textContent = i + lineNum; //定义第一个子节点        $(_rBList[i - 1]).eAttr("rowname", i + lineNum)        _iRowCell = _cellList.filter(function (el) {    //第i行的所有单元格            return (+(el.row) === i && (el.parentNode.nodeType !== 11)); //返回值第i行的所有单元格        });        _top = _rBList[i - 1].offsetTop;//声明上边距        _iRowCell.forEach(function (el) {//for循环遍历            _frag.appendChild(el);       //查找子节点            el.style.top = _top + "px";  //赋值上边距            _colName = el.col;           //指定参数            _newRow = +(i + lineNum);            el.id = "POS_" + _colName + "_" + _newRow;//赋值ID            $(el).eAttr("row", _newRow);        })    }    _cellBox.appendChild(_frag);    _mergeCellList = _cellList.filter(function (el) {   //获取当前单元格以下的所有合并的单元格        return +(el.s_mergerow) > _rowNum;    });    _mergeCellList.forEach(function (el) {      /*此处为 修改该行下的 所有合并 单元格的 信息*/        $(el).eAttr("s_mergerow", el.s_mergerow + lineNum);        $(el).eAttr("e_mergerow", el.e_mergerow + lineNum);        $(el).eAttr("s_merge", "POS_" + el.s_mergecol + "_" + el.s_mergerow);        $(el).eAttr("e_merge", "POS_" + el.e_mergecol + "_" + el.e_mergerow);    });    var _data = {        start: _rowNum,    //第几行开始        lineNum: lineNum,        //添加几行        sizeChange: (_rBoardNext.offsetHeight === U.MD.O.E.rowBoardHeight ? false : _rBoardNext.offsetHeight),       //如果高度等于单元格初始化高度(40) 则为false  否则将高度存起来        mergeArr: _mergeChangeArr    //需要修改被合并单元格的元素 的 信息    };    U.MD.O.E.dataChange(U.MD.O.E.excelInfo("addLine", _data), req);}/***  删除行*  startCell 选中的第一个单元格*  endCell 选中的最后一个单元格*  req 当为true的时候 不发送send请求*/U.MD.O.E.RC.removeLine = function (startCell, endCell, req) {    var _excel = U.MD.O.E,        _cellList = U.UF.C.toArray($(".U_MD_O_E_cell")),         //所有的单元格        _rBList = $(".U_MD_O_E_row"),                            //所有的行板        _rBBox = $(".U_MD_O_E_rowBoard")[0],                     //行板的父元素        _rBLen = _rBList.length,                                 //所有的行板的长度        _startNum = +(startCell.row),                            //获取第一个单元格的所在行数        _endNum = +(endCell.row),                                //获取最后一个单元格的所在行数        _rmNum = _endNum - _startNum + 1,                        //所删除行的个数        _iRowCell,                                               //第i行的所有单元格        _rBEl,                                                   //行板元素        _newRowNum,                                              //未被删除的行板文本        _mergeCellList,                                          //获取当前单元格以下的所有合并的单元格        _colName,                                                //单元格的属性名        _mergeId,                                                //用于判断是否是合并单元格        s_mergerow,                                              //合并单元格的值        e_mergerow,        s_mergecol,                                              //删除合并单元格的值        e_mergecol,        _mergeArr = [],                                          //声明数组        _mergeChangeArr = [],        _mergeInfo,                                              //后面加入参数用于调用数组        _mergeNum,                                               //被删除的单元格的个数        _top,                                                    //上边距        i;                                                      //声明变量用于for循环    for (i = _startNum; i <= _endNum; i++) {             /*此处为 删除 对应的行板 和 对应的所有单元格*/        _rBList[i - 1].remove();                         //删除该行对应的行板        _iRowCell = _cellList.filter(function (el) {     //获取该行的所有单元格            return +(el.row) === i;        })        _iRowCell.forEach(function (el) {                         //for循环遍历改行的所有单元格            if (el.s_merge && (_mergeId !== el.s_merge)) {        //如果是合并单元格的元素                _mergeId = el.s_merge;                            //赋值                s_mergerow = el.s_mergerow;                e_mergerow = el.e_mergerow;                s_mergecol = el.s_mergecol;                e_mergecol = el.e_mergecol;                       //给单元格赋值拆分合并                if (_startNum <= s_mergerow && _endNum >= e_mergerow) {  //选择区域大于单元格区域时 非截取合并单元格情况                    el.remove();                                        //删除单元格                    return;                                             返回                }                //这三种情况表示则 截取合并单元格删除的情况                if ((_startNum <= s_mergerow && _endNum >= s_mergerow)) {      //截取上半部分的情况                    _mergeNum = _endNum - s_mergerow + 1    //从头开始 被删除的单元格个数                    s_mergerow = s_mergerow + _mergeNum - _rmNum;       //重新设置合并单元格的开头                    e_mergerow = e_mergerow - _rmNum;       //重新设置合并单元格的结尾                    _mergeInfo = {                          //声明数组                        smergeId: "POS_" + s_mergecol + "_" + s_mergerow,                        emergeId: "POS_" + e_mergecol + "_" + e_mergerow,                        row: s_mergerow,                        col: s_mergecol,                        endRow: e_mergerow,                        endCol: e_mergecol                    };                    _mergeArr.push(_mergeInfo);             //调用函数                } else if (_startNum <= e_mergerow && _endNum >= e_mergerow) {    //截取下半部分的情况                    _mergeNum = e_mergerow - _startNum + 1;    //从尾开始 被删除的单元格个数                    e_mergerow = e_mergerow - _mergeNum; //重新设置合并单元格的结尾                    _mergeInfo = {                       //声明数组                        smergeId: "POS_" + s_mergecol + "_" + s_mergerow,   //赋值给id                        emergeId: "POS_" + e_mergecol + "_" + e_mergerow,                        row: s_mergerow,                        col: s_mergecol,                        endRow: e_mergerow,                        endCol: e_mergecol                    };                    _mergeArr.push(_mergeInfo);                } else if (_startNum > s_mergerow && _endNum < e_mergerow) {    //截取中间部分的情况                    e_mergerow = e_mergerow - _rmNum; //重新设置合并单元格的结尾                    _mergeInfo = {                        smergeId: "POS_" + s_mergecol + "_" + s_mergerow,                        emergeId: "POS_" + e_mergecol + "_" + e_mergerow,                        row: s_mergerow,                        col: s_mergecol,                        endRow: e_mergerow,                        endCol: e_mergecol                    };                    _mergeArr.push(_mergeInfo);                }                var _splitCells = $("#" + _mergeId)[0];   //声明变量选择指定的对象                _excel.RC.splitCells(_splitCells, true);  //拆分单元格                 }            el.remove();        });    }    for (i = _endNum + 1; i <= _rBLen; i++) {       /* 此处为移动删除行下的 所有单元格 */        _rBEl = _rBList[i - 1];                    //行板元素        _newRowNum = +(_rBEl.innerText) - _rmNum;  //这里处理参数        _rBEl.firstChild.textContent = _newRowNum;        $(_rBEl).eAttr("rowname", _newRowNum);        _iRowCell = _cellList.filter(function (el) {    //获取该行的所有单元格            return +(el.row) === i;        })        _top = _rBEl.offsetTop;                     //赋以上边距        _iRowCell.forEach(function (el) {           //遍历获取的所有单元格            el.style.top = _top + "px";             //给予上边距的值            $(el).eAttr("row", _newRowNum);         //返回值            _colName = el.col;            el.id = "POS_" + _colName + "_" + _newRowNum;        });    }    _mergeCellList = _cellList.filter(function (el) {   //获取当前单元格以下的所有合并的单元格         return +(el.s_mergerow) > _startNum;    });    _mergeCellList.forEach(function (el) {      /*此处为 修改该行下的 所有合并 单元格的 信息*/        $(el).eAttr("s_mergerow", el.s_mergerow - _rmNum);        $(el).eAttr("e_mergerow", el.e_mergerow - _rmNum);        $(el).eAttr("s_merge", "POS_" + el.s_mergecol + "_" + el.s_mergerow);        $(el).eAttr("e_merge", "POS_" + el.e_mergecol + "_" + el.e_mergerow);    });    console.log(_mergeArr);    var smergeCell,        emergeCell;                             //声明变量    _mergeArr.forEach(function (json) {        smergeCell = $("#" + json.smergeId)[0]; //需要合并的开始单元格        emergeCell = $("#" + json.emergeId)[0]; //需要合并的结束单元格        _excel.RC.mergeCells(smergeCell, emergeCell, true);        json.content = smergeCell.innerHTML;    });    var _data = {        start: _startNum,    //第几行开始        end: _endNum,         //第几行结束        lineNum: _rmNum,        //删除的行数        mergeArr: _mergeArr    };    U.MD.O.E.dataChange(U.MD.O.E.excelInfo("delLine", _data), req);};/***  添加列功能*  checkdCell 被选中的最后一个单元格*  colNums 列数*  req 当为true的时候 不发送send请求*/U.MD.O.E.RC.addCol = function (checkdCell, colNums, req) {    var _excel = U.MD.O.E,        _cellBox = $(".U_MD_O_E_cellBox")[0],                   //单元格的最大的包        _cellList = U.UF.C.toArray($(".U_MD_O_E_cell")),        //所有的单元格        _rBList = $(".U_MD_O_E_row"),                           //所有的行板        _cBList = $(".U_MD_O_E_column"),                        //所有的列板        _cBBox = $(".U_MD_O_E_colBoard")[0],                    //所有的列版的包        _cellLast = checkdCell,                                 //被选中单元格中的最后一个        _colNum = _cellLast.col,                                //获取最后一个单元格的所在列数        _cBoardCurrent = $(".U_MD_O_E_column")[_colNum - 1],    //获取除了最后一个列版的所以列版        _cBoardNext,                                            //当前单元格下一列所对应的列板        _colNext,                                               //单元格的下一列的所有元素        _cBLen = _cBList.length,                                //所有列板的长度        _width,                                                 //当前单元格的下一列的宽        _left,                                                  //当前单元格的下一列的左边距        _frag = $$("frag"),                                     //声明节点DocumentFragment是一种“轻量级”的文档,可以包含和控制节点,但不会像完整的文档那样占用额外的资源。        _newEl,                                                 //合并单元格中 最大的元素 的列        _addWidth,                                              //新增的单元格的宽度        _iColCell,                                              //第i列的所有单元格        _mergeChangeArr = [],                                   //声明数组后面用于调用函数        _rowName,                                               //单元格列的属性名        _mergeCellList,                                         //当前选中单元格的行        _mergeId,                                               //当前选中单元格的id        _newCol,                                                //添加列的位置        _newcB,                                                 //新的列板        _colRule,                                               //获取的行尺        _colName,                                               //克隆的列        i,                                                      //声明变量后面用于for循环        j;    if (_colNum < _cBLen) {                             //如果选中的行不是最后一行         _cBoardNext = $(".U_MD_O_E_column")[_colNum];   //当前单元格下一列所对应的列板        _colNext = _cellList.filter(function (el) {     //当前单元格的下一列的所有元素            return +(el.col) === (_colNum + 1);         //返回值        });        _width = _cBoardNext.offsetWidth;               //给当前单元格下一列所对应的列板赋值宽        _left = _cBoardNext.offsetLeft;                 //给当前单元格下一列所对应的列板赋值左边距    } else {        _cBoardNext = _cBoardCurrent                    //给当前单元格下一列所对应的列板        _colNext = _cellList.filter(function (el) {     //当前单元格的下一列的所有元素            return +(el.col) === (_colNum);             //返回值        });        _width = _cBoardCurrent.offsetWidth;            //给当前单元格下一列的所有元素赋值宽        _left = _cBoardCurrent.offsetLeft;              //给当前单元格下一列的所有元素赋值左边距    }       _addWidth = _width * colNums,                       //声明宽度    _cBBox.style.width = _cBBox.offsetWidth + _addWidth + "px"; //所有的列版的包赋值宽度    _colNext.forEach(function (el) {                    //for循环遍历        _rowName = +(el.row);               _colName = +(el.col);        var colLen;        if (_colNum < _cBLen) {                         //如果选中的行不是最后一行             i = 0;            colLen = colNums;                           //colNums为添加列的 数量 这里是循环添加 colNums 列        } else {            i = 1;            colLen = colNums + 1;                       //此处为选中最后一列 时的处理        }        var _newEl = el.cloneNode(),            _mergeArr,            _mergeEl;        if (el.s_mergecol === _colName) {         //如果克隆的列 与 合并单元格中 最大的元素 的列 相同            _mergeId = el.s_merge;                //最大单元格的id             _newEl.style.display = "block";       //为显示            _newEl.style.width = _width + "px";   //为宽度            _newEl.style.height = _rBList[_rowName - 1].offsetHeight + "px";    //为高度            $(_newEl).eRmAttr("s_mergecol");            $(_newEl).eRmAttr("s_mergerow");            $(_newEl).eRmAttr("e_mergecol");            $(_newEl).eRmAttr("e_mergerow");            $(_newEl).eRmAttr("s_merge");            $(_newEl).eRmAttr("e_merge");          //返回各种参数        }        if (el.s_merge && el.s_merge !== _mergeId) {                 /*(合并单元格 中间 点击添加列的情况:    此处为将选中的列的 右边的合并列一律修改信息)                                                                     克隆的元素是被合并的单元格 且 不是最大合并单元格 所在的列*/            _mergeId = el.s_merge;                                  //最大单元格的id             _mergeEl = $("#" + _mergeId)[0];                        //选择指定的对象            _mergeEl.style.width = _mergeEl.offsetWidth + _addWidth + "px";        //修改最大合并 单元格的宽度            _mergeArr = _cellList.filter(function (el) {            //此处为将筛选 选中的列的 右边的合并列一律修改信息)                return el.s_merge === _mergeId;                     //返回值            })            _mergeArr.forEach(function (el) {                       //for循环遍历选中的列的                $(el).eAttr("e_mergecol", el.e_mergecol + colNums);                $(el).eAttr("e_merge", "POS_" + el.e_mergecol + "_" + el.e_mergerow);            });            var temp = {                                            //声明数组                col: el.s_mergecol,                row: el.s_mergerow            };            _mergeChangeArr.push(temp);        }        for (; i < colLen; i++) {                                 //此处为添加新的行榜            _newEl = _newEl.cloneNode();            if (el.s_mergecol && el.s_mergecol !== _colName) {    //如果克隆的是非最大单元格的元素                 $(_newEl).eAttr("s_merge", el.s_merge);                $(_newEl).eAttr("s_mergerow", el.s_mergerow);                $(_newEl).eAttr("s_mergecol", el.s_mergecol);                $(_newEl).eAttr("e_mergerow", el.e_mergerow);                $(_newEl).eAttr("e_mergecol", el.e_mergecol);                $(_newEl).eAttr("e_merge", "POS_" + _newEl.e_mergecol + "_" + _newEl.e_mergerow);            }            _newEl.style.left = _left + _width * i + "px";      //赋值对象的左边距            _newCol = _colName + i;                             //添加列的位置 为当前列的位置 + i;            $(_newEl).eAttr("col", _newCol);            _newEl.row = el.row;            _newEl.id = "POS_" + _newCol + "_" + _rowName;            U.MD.O.E.BC.Focus(_newEl);                          //添加单元格聚焦事件            U.MD.O.E.BC.dragCheckd(_newEl);                     //添加拖拽选中事件            _frag.appendChild(_newEl);        }    });    for (i = 0; i < colNums; i++) {                              //此处为添加新的列榜        _newcB = _cBoardNext.cloneNode(true);        _colName = +(_cBoardCurrent.colname);                           _newcB.firstChild.textContent = _excel.fromCharCode(_colName + 1);        $(_newcB).eAttr("colname", _colName + 1);        _colRule = $(_newcB).find(".U_MD_O_E_colRule");        U.MD.O.E.BC.colExpanding(_colRule);        U.MD.O.E.BC.cBoardChecked(_newcB);                      //添加点击 拖拽功能        _excel.After(_cBoardCurrent, _newcB);        _cBoardCurrent = _newcB;    };    for (i = _colNum + 1; i <= _cBLen; i++) {                   //此处是操作单元格的        _cBList[i - 1].firstChild.textContent = _excel.fromCharCode(i + colNums);        $(_cBList[i - 1]).eAttr("colname", i + colNums)        _iColCell = _cellList.filter(function (el) {            return (+(el.col) === i) && el.parentNode.nodeType !== 11;        })        _left = _cBList[i - 1].offsetLeft;        _iColCell.forEach(function (el) {            _frag.appendChild(el);            el.style.left = _left + "px";            _rowName = el.row;            _newCol = +(i + colNums);            el.id = "POS_" + _newCol + "_" + _rowName;            $(el).eAttr("col", _newCol);        })    }    _cellBox.appendChild(_frag);    _mergeCellList = _cellList.filter(function (el) {   //获取当前单元格以下的所有合并的单元格        return +(el.s_mergecol) > _colNum;    });    _mergeCellList.forEach(function (el) {              /*此处为 修改该行下的 所有合并 单元格的 信息*/        $(el).eAttr("s_mergecol", el.s_mergecol + colNums);        $(el).eAttr("e_mergecol", el.e_mergecol + colNums);        $(el).eAttr("s_merge", "POS_" + el.s_mergecol + "_" + el.s_mergerow);        $(el).eAttr("e_merge", "POS_" + el.e_mergecol + "_" + el.e_mergerow);    });    var _data = {        start: _colNum,                                 //第几行开始添加 列        colNums: colNums,                               //添加几列        sizeChange: (_cBoardNext.offsetWidth === U.MD.O.E.colBoardWidth ? false : _cBoardNext.offsetWidth),       //如果高度等于单元格初始化宽度(200) 则为false  否则将宽度存起来        mergeArr: _mergeChangeArr                       //需要修改被合并单元格的元素 的 信息    };    U.MD.O.E.dataChange(U.MD.O.E.excelInfo("addCol", _data), req);}/***  删除列功能*  startCell 选中的第一个单元格*  endCell 选中的最后一个单元格*  req 当为true时不发送send请求*/U.MD.O.E.RC.removeCol = function (startCell, endCell, req) {    //传入参数    var _excel = U.MD.O.E,        _cellList = U.UF.C.toArray($(".U_MD_O_E_cell")),        //所有的单元格        _cBList = $(".U_MD_O_E_column"),                        //所有的列板        _cBBox = $(".U_MD_O_E_colBoard")[0],                    //列板的父元素        _cBLen = _cBList.length,                                //列板的总个数        _startNum = +(startCell.col),                           //获取第一个单元格的所在列数        _endNum = +(endCell.col),                               //获取最后一个单元格的所在列数        _rmNum = _endNum - _startNum + 1,                       //所删除的列的个数        _rmWidth = 0,                                           //所需要删除的宽度        _cellList,                                              //该列的所有单元格        _cBEl,                                                  //列板的元素        _newColNum,                                             //新的元素的移动        _iColCell,                                              //第 i 列 所有单元格        _mergeId,                                               //获取的id        _mergeCellList,                                         //当前的所有单元格        _mergeArr = [],                                         //声明数组        _rowName,        _left,                                                  //单元格的左边距        i;    for (i = _startNum; i <= _endNum; i++) {             //此处为删除要删的列(单元格) 包括 对应的列板        _rmWidth += _cBList[i - 1].offsetWidth;         //获取所需要删除的宽度        _cBList[i - 1].remove();                        //删除该列对应的列板        _iColCell = _cellList.filter(function (el) {    //获取该列的所有单元格            return +(el.col) === i;                     //返回值        });        _iColCell.forEach(function (el) {            if (el.s_merge && (_mergeId !== el.s_merge)) {        //如果是合并单元格的元素                _mergeId = el.s_merge;                s_mergerow = el.s_mergerow;                e_mergerow = el.e_mergerow;                s_mergecol = el.s_mergecol;                e_mergecol = el.e_mergecol;                if (_startNum <= s_mergecol && _endNum >= e_mergecol) {  //选择区域大于单元格区域时 非截取合并单元格情况                    el.remove();                                         //删除单元格                    return;                }                //这三种情况表示则 截取合并单元格删除的情况                if ((_startNum <= s_mergecol && _endNum >= s_mergecol)) {        //截取左半部分的情况                    _mergeNum = _endNum - s_mergecol + 1                         //从头开始 被删除的单元格个数                            s_mergecol = s_mergecol + _mergeNum - _rmNum;                //重新设置合并单元格的开头                     e_mergecol = e_mergecol - _rmNum;                            //重新设置合并单元格的结尾                     _mergeInfo = {                                               //生成数组                        smergeId: "POS_" + s_mergecol + "_" + s_mergerow,        //定义参数                        emergeId: "POS_" + e_mergecol + "_" + e_mergerow,                        row: s_mergerow,                        col: s_mergecol,                        endRow: e_mergerow,                        endCol: e_mergecol                    };                    _mergeArr.push(_mergeInfo);                    console.log(1);                } else if (_startNum <= e_mergecol && _endNum >= e_mergecol) {    //截取下半部分的情况                    _mergeNum = e_mergecol - _startNum + 1;                       //从尾开始 被删除的单元格个数                    e_mergecol = e_mergecol - _mergeNum;                         //重新设置合并单元格的结尾                    _mergeInfo = {                        smergeId: "POS_" + s_mergecol + "_" + s_mergerow,                        emergeId: "POS_" + e_mergecol + "_" + e_mergerow,                        row: s_mergerow,                        col: s_mergecol,                        endRow: e_mergerow,                        endCol: e_mergecol                    };                    _mergeArr.push(_mergeInfo);                    console.log(2);                } else if (_startNum > s_mergecol && _endNum < e_mergecol) {    //截取中间部分的情况                    e_mergecol = e_mergecol - _rmNum;                           //重新设置合并单元格的结尾                    _mergeInfo = {                                              //生成数组                        smergeId: "POS_" + s_mergecol + "_" + s_mergerow,                        emergeId: "POS_" + e_mergecol + "_" + e_mergerow,                        row: s_mergerow,                        col: s_mergecol,                        endRow: e_mergerow,                        endCol: e_mergecol                    };                    _mergeArr.push(_mergeInfo);                    console.log(3);                }                var _splitCells = $("#" + _mergeId)[0];                _excel.RC.splitCells(_splitCells, true);  //拆分单元格                 }            el.remove();                                 //删除不必要的参数        });    }    for (i = _endNum + 1; i <= _cBLen; i++) {           //此处为 被删列后的所有元素的移动 和信息 修改        _cBEl = _cBList[i - 1];                         //列板元素        _newColNum = +(_cBEl.colname) - _rmNum;                 _cBEl.firstChild.textContent = _excel.fromCharCode(_newColNum);        $(_cBEl).eAttr("colname", _newColNum);        _iColCell = _cellList.filter(function (el) {//获取该列的所有单元格            return +(el.col) === i;        });        _left = _cBEl.offsetLeft;        _iColCell.forEach(function (el) {               //for循环被删列后的所有元素            el.style.left = _left + "px";               //制造左边距            $(el).eAttr("col", _newColNum);            _rowName = el.row;                          //调整参数            el.id = "POS_" + _newColNum + "_" + _rowName;        });    }    _cBBox.style.width = _cBBox.offsetWidth - _rmWidth + "px"; //赋值列板的父元素的宽度    _mergeCellList = _cellList.filter(function (el) {   //获取当前单元格以下的所有合并的单元格         return +(el.s_mergecol) > _startNum;    });    _mergeCellList.forEach(function (el) {      /*此处为 修改该列下的 所有合并 单元格的 信息*/        $(el).eAttr("s_mergecol", el.s_mergecol - _rmNum);        $(el).eAttr("e_mergecol", el.e_mergecol - _rmNum);        $(el).eAttr("s_merge", "POS_" + el.s_mergecol + "_" + el.s_mergerow);        $(el).eAttr("e_merge", "POS_" + el.e_mergecol + "_" + el.e_mergerow);    });    var smergeCell,                         //生成遍历        emergeCell;    _mergeArr.forEach(function (json) {     //for循环遍历json数组        smergeCell = $("#" + json.smergeId)[0];        emergeCell = $("#" + json.emergeId)[0];//赋值json数组的参数        _excel.RC.mergeCells(smergeCell, emergeCell, true);        json.content = smergeCell.innerHTML;    })    var _data = {        start: _startNum,        //第几列开始,        end: _endNum,           //第几列结束        colNums: _rmNum,        //删除的列数        mergeArr: _mergeArr    };    U.MD.O.E.dataChange(U.MD.O.E.excelInfo("delCol", _data), req);}/***  拆分单元格功能*  cell 需要拆分的单元格*  dataChange 如果存在 则不修改data的后台数据*  req 当为true时不发送send请求*/U.MD.O.E.RC.splitCells = function (cell, dataChange, req) {    if (!(cell.s_merge)) return;    var _excel = U.MD.O.E,                                              _cellList = U.UF.C.toArray($(".U_MD_O_E_cell")),        //所有的单元格        _startX = +(cell.col),                                  //单元格 列        _startY = +(cell.row),                                  //单元格 行        _endX = +(cell.e_mergecol),                             //获取最后一个单元格的所在列数        _endY = +(cell.e_mergerow),                             //获取最后一个单元格的所在行数        _width = $(".U_MD_O_E_column")[_startX - 1].offsetWidth,//单元格列的宽度        _height = $(".U_MD_O_E_row")[_startY - 1].offsetHeight, //单元格行的高度        _id,        _cell,        i,        j;    cell.edited = true;    for (i = _startX; i <= _endX; i++) {        /*此处是 将被隐藏的单元格 display改为block*/        for (j = _startY; j <= _endY; j++) {    //for循环嵌套获取所有的单元格            _id = "POS_" + i + "_" + j;            _cell = $("#" + _id)[0];            _cell.style.display = "block";            $(_cell).eRmAttr("s_mergecol");            $(_cell).eRmAttr("s_mergerow");            $(_cell).eRmAttr("e_mergecol");            $(_cell).eRmAttr("e_mergerow");            $(_cell).eRmAttr("s_merge");            $(_cell).eRmAttr("e_merge");        }    }    cell.style.width = _width + "px";       //给所有单元格赋值宽度    cell.style.height = _height + "px";     //给所有单元格赋值高度    if (dataChange) return;    var _data = {                           //生成数组        col: _startX,        row: _startY    };    U.MD.O.E.dataChange(U.MD.O.E.excelInfo("splitCells", _data), req);    //合并时 保存数据};/***  合并单元格功能*  startCell 选中的第一个单元格*  endCell 选中的最后一个单元格*  dataChange 如果存在 则不修改data的后台数据*  req 如果存在 则不发送send请求*/U.MD.O.E.RC.mergeCells = function (startCell, endCell, dataChange, req) {    var _excel = U.MD.O.E;    if (!startCell || !endCell || endCell === startCell) return;    var _startCell = startCell,             //选中的第一个单元格        _startcol = _startCell.col,         //开始x坐标        _startrow = +(_startCell.row),      //开始y坐标        _endCell = endCell,                 //选中的最后一个单元格        _endcol = +(_endCell.col),          //结束x坐标        _endrow = +(_endCell.row),          //结束y坐标        _mergeWidth = 0,                            //合并后的总宽度        _mergeHeight = 0,                           //合并后的总高度        _crossCol = _endcol - _startcol + 1,        //所跨越的列        _crossRow = _endrow - _startrow + 1,        //所跨越的行        _cellList = U.UF.C.toArray($(".U_MD_O_E_cell")),        //所有的单元格        _checkCellList,        _cBList = $(".U_MD_O_E_column"),            //所有的列板        _rBList = $(".U_MD_O_E_row"),               //所有的行板        _cell,        i,        _cellcol,                                   //第 i 列 所有单元格        _cellrow,                                   //第 i 行 所有单元格        len = _cellList.length;    _startCell.edited = true;    for (i = _startcol; i <= _endcol; i++) {         //此处计算合并后单元格的宽        _mergeWidth += _cBList[i - 1].offsetWidth;    }    for (i = _startrow; i <= _endrow; i++) {         //此处计算合并后单元格的高        _mergeHeight += _rBList[i - 1].offsetHeight;    }    _checkCellList = _cellList.filter(function (el) {        //此处相当于 获取 被选中元素 (这里不用class获取是因为 要考虑 互联)        _cellcol = +(el.col);        _cellrow = +(el.row);        return (_cellcol >= _startcol && _cellcol <= _endcol) && (_cellrow >= _startrow && _cellrow <= _endrow);    })    if (_startCell.s_merge) return;    _checkCellList.forEach(function (el) { //for循环遍历获取每一个选中的元素(单元格)        el.style.display = "none";          //让他隐藏        $(el).eAttr("s_merge", "POS_" + _startcol + "_" + _startrow);        $(el).eAttr("e_merge", "POS_" + _endcol + "_" + _endrow);        $(el).eAttr("s_mergeCol", _startcol);        $(el).eAttr("e_mergeCol", _endcol);        $(el).eAttr("s_mergeRow", _startrow);        $(el).eAttr("e_mergeRow", _endrow);//返回值        if (_startCell.innerText) return;  //判断文本内容后返回值        _startCell.innerText = el.innerText;    })    _startCell.style.width = _mergeWidth + "px"; //赋值选中的第一个单元格的宽度    _startCell.style.height = _mergeHeight + "px"; //赋值选中的第一个单元格的高度    _startCell.style.display = "block";         //赋值选中的第一个单元格的显示    if (dataChange) return;    var _data = {                               //生成数组        row: _startrow,        col: _startcol,        content: startCell.innerHTML,        cssText: startCell.style.cssText,        endRow: _endrow,        endCol: _endcol    };    U.MD.O.E.dataChange(U.MD.O.E.excelInfo("merge", _data), req);    //合并时 保存数据};/** 任务栏重命名* task 选中的工作表*/U.MD.O.E.RC.taskRename = function (task) {    var _task = task,                       //获取任务栏    _text = task.firstChild.textContent,    //获取任务栏的名字    _input;                                             //    _name = _task.innerHTML;    $(_task).addClass('U_MD_O_E_task_renameing'); //修改该工作表的定位模式    $$('input',        { 'type': 'text', 'id': 'rename', 'value': _text,            'style': { 'cssText': 'width:109px;height:38px;position: absolute;left:0;top:0;text-align: center;font-size: 16px;line-height:38px;' }        },                                   //在任务栏生成按钮,赋样式属性    _task);    _input = $('#rename')[0];                //获取input    _input.focus()                          //获取焦点//获取光标    _input.onblur = function (e) {        U.UF.EV.stopBubble(e);              //阻止冒泡                _task.innerHTML = _input.value;        $(_task).removeClass('U_MD_O_E_task_renameing'); //完成修改后移除input        var _data = {                       //声明数组            name: _input.value,            id: _task.id        }        U.MD.O.E.dataChange(U.MD.O.E.excelInfo("reNameTask", _data));//修改时 保存数据    }    $(_input).bind('keypress', function (e) {        U.UF.EV.stopBubble(e); //阻止冒泡            });    $(_input).bind('keydown', function (e) {        U.UF.EV.stopBubble(e); //阻止冒泡            });    $(_input).bind('keyup', function (e) {        U.UF.EV.stopBubble(e); //阻止冒泡            });    $(_input).bind('dblclick', function (e) {        U.UF.EV.stopBubble(e); //阻止冒泡            })}/** 任务栏删除* req如果存在 则不像后台发送请求*/U.MD.O.E.RC.taskDelete = function (task, req) {    var _task = task,           //获取任务栏        _id = _task.id,         //声明ID        _switchTask,        _data = {               //声明数组            id: _id        };    if ($(".U_MD_O_E_task ").length === 3) {//只有一个工作表是不能删除        U.Alert("至少要有一个工作表!");    //弹窗    } else if (_id === U.MD.O.E.taskId) {   //如果要删除的工作表等于当前选中工作表        _switchTask = _task.nextElementSibling || _task.previousElementSibling;   //获取下一个工作表元素 如果不存在 则切换为上一个工作表元素        $(_switchTask).addClass("U_MD_O_E_taskCheck");        U.MD.O.E.taskId = _switchTask.id;   //重新赋值ID        U.MD.O.E.rePrintExcel();            //重新打印工作表                U.MD.O.E.dataChange(U.MD.O.E.excelInfo("deleteTask", _data), req); //删除时保存数据,req如果存在 则不像后台发送请求        _task.remove();    } else {        U.MD.O.E.dataChange(U.MD.O.E.excelInfo("deleteTask", _data), req); //删除时保存数据,req如果存在 则不像后台发送请求        _task.remove();    }}/** 任务栏复制* task 选中的工作表*/U.MD.O.E.RC.taskCopy = function (task) {    var _task = task;              //获取任务栏    U.MD.O.E.taskCopyId = _task.id;//赋值id    U.MD.O.E.addTask();             //复制任务栏}/** 单元格复制 */U.MD.O.E.RC.cellCopy = function () {    var _focusBox = $("#U_MD_O_E_focusBox")[0],                        _editorBox = $("#U_MD_O_E_editorBox")[0],                       _cellList = U.UF.C.toArray($(".U_MD_O_E_cellCheckd"));  //获取单元格    if (!_cellList.length) return;    U.MD.O.E.RC.cellTaste.copyContent = _cellList;              //复制单元格    return true;}/** 单元格粘贴*/U.MD.O.E.RC.cellTaste = function (_arrjson, _arrcontent) {    var _copycontent = U.MD.O.E.RC.cellTaste.copyContent, //复制选中的单元格         _cutcontent = U.MD.O.E.RC.cellTaste.cutContent, //剪切选中的单元格        _leftCorner = U.UF.C.toArray($(".U_MD_O_E_cellCheckd"))[0]; //粘贴选中的左上角单元格    if (_cutcontent) {                                          //如果是剪切有内容        var _cutCellColfirst = _cutcontent[0].col,              //要剪切的选中的第一个单元格的列            _cutCellRowfirst = _cutcontent[0].row;              //要剪切的选中的第一个单元格的行        _filterCutContent = _cutcontent.filter(function (e) {   //过滤给隐藏的div            return e.style.display != "none";                   //返回值过滤给隐藏的div        });        for (var i = 0; i < _filterCutContent.length; i++) {                                //for循环遍历过滤给隐藏的div            _cute_col = _filterCutContent[i].e_mergecol - _filterCutContent[i].s_mergecol, //合并单元格col头和尾的差值                _cute_row = _filterCutContent[i].e_mergerow - _filterCutContent[i].s_mergerow; //合并单元格row头和尾的差值            _cutCellCol = _filterCutContent[i].col;                                            //指定单元格的行板            _cutCellRow = _filterCutContent[i].row;                                            //指定单元格的列板            _cutCellColDifference = _cutCellCol - _cutCellColfirst;            _cutCellRowDifference = _cutCellRow - _cutCellRowfirst;            _leftCol = _leftCorner.col;            _leftRow = _leftCorner.row;            _cutColDifference = _leftCol + _cutCellColDifference;                               //相差的列数            _cutRowDifference = _leftRow + _cutCellRowDifference;                               //相差的行数            if (_cute_col) {                                                                    //调用合并单元格的接口                U.MD.O.E.RC.mergeCells($("#POS_" + _cutColDifference + "_" + _cutRowDifference)[0], $("#POS_" + (_cutColDifference + _cute_col) + "_" + (_cutRowDifference + _cute_row))[0]);            }            _cutNewCell = $("#POS_" + _cutColDifference + "_" + _cutRowDifference)[0];            _cutNewCell.innerHTML = _filterCutContent[i].innerHTML;            _filterCutContent[i].innerHTML = "";            U.MD.O.E.RC.cellTaste._filterCutContent = null;        }    } else if (_copycontent) {                   //如果是粘贴有内容        var _cellColfirst = _copycontent[0].col, //要复制的选中的第一个单元格的列            _cellRowfirst = _copycontent[0].row, //要复制的选中的第一个单元格的行            _copydata = [];        _filterCopyContent = _copycontent.filter(function (e) {//过滤给隐藏的div            return e.style.display != "none";        });        for (var i = 0; i < _filterCopyContent.length; i++) {            _cellCol = _filterCopyContent[i].col;            _cellRow = _filterCopyContent[i].row;            _cellColDifference = _cellCol - _cellColfirst;            _cellRowDifference = _cellRow - _cellRowfirst;            _leftCol = _leftCorner.col;            _leftRow = _leftCorner.row;            _colDifference = _leftCol + _cellColDifference; //相差的列数            _rowDifference = _leftRow + _cellRowDifference; //相差的行数            _e_col = _filterCopyContent[i].e_mergecol - _filterCopyContent[i].s_mergecol, //合并单元格col头和尾的差值            _e_row = _filterCopyContent[i].e_mergerow - _filterCopyContent[i].s_mergerow; //合并单元格row头和尾的差值            if (_e_col) {//调用合并单元格的接口                U.MD.O.E.RC.mergeCells($("#POS_" + _colDifference + "_" + _rowDifference)[0], $("#POS_" + (_colDifference + _e_col) + "_" + (_rowDifference + _e_row))[0]);            }            _newCell = $("#POS_" + _colDifference + "_" + _rowDifference)[0];            _newCell.innerHTML = _filterCopyContent[i].innerHTML;            var _data = {                row: _newCell.row,                col: _newCell.col,                content: _newCell.innerHTML,                innerText: _newCell.innerText           //之所以要发innerText 是因为要用来判断data数据里单元格的内容如果被改为空 则删除掉该单元格的数据             };                                          //讲内容打包给后台            _copydata.push(_data);        }        U.MD.O.E.dataChange(U.MD.O.E.excelInfo("blur", _copydata));    } else if (_arrjson) {        var _cellColDifference = 0;        var _cellRowDifference = 0;        var _copydata = [];        for (var i = 0; i < _arrjson.td; i++) {            _leftCol = _leftCorner.col;            _leftRow = _leftCorner.row;            _maxcol = _leftCol + (_arrjson.age - 1);            _maxrow = _leftRow + (_arrjson.tr - 1);            if ((_leftCol + _cellColDifference) > _maxcol) {                _cellColDifference = 0;                _cellRowDifference += 1;            }            _newCell = $("#POS_" + (_leftCol + _cellColDifference) + "_" + (_leftRow + _cellRowDifference))[0];            _cellColDifference += 1;            _newCell.innerHTML = _arrcontent[i];            var _data = {                row: _newCell.row,                col: _newCell.col,                content: _newCell.innerHTML,                innerText: _newCell.innerText  //之所以要发innerText 是因为要用来判断data数据里单元格的内容如果被改为空 则删除掉该单元格的数据             };  //讲内容打包给后台            _copydata.push(_data);        }    }    U.MD.O.E.dataChange(U.MD.O.E.excelInfo("blur", _copydata));}/** 单元格剪切*/U.MD.O.E.RC.cellCut = function () {     var _focusBox = $("#U_MD_O_E_focusBox")[0],        _editorBox = $("#U_MD_O_E_editorBox")[0],        _cellList = U.UF.C.toArray($(".U_MD_O_E_cellCheckd")); //选中的div    if (!_cellList.length) return;    U.MD.O.E.RC.cellTaste.cutContent = _cellList;}/** 删除A链接*/U.MD.O.E.RC.clearAContent = function () {    var _editorBox = $("#U_MD_O_E_editorBox")[0],       //选择A连接的包        _cellList = U.UF.C.toArray($(".U_MD_O_E_cellCheckd"));    _a = $('a', _editorBox.focusEl)[0];                 //获取选区中的第一个a标签    $$("div", {}, _cellList[0]);                        //创建一个div    _cellList[0].children[1].innerText = _a.innerText; //赋值给创建的div    _cellList[0].removeChild(_a);                       //删除第一个a标签    var _data = {                                       //生成数组        row: _cellList[0].row,        col: _cellList[0].col,        content: _cellList[0].innerHTML    }    U.MD.O.E.dataChange(U.MD.O.E.excelInfo("clearAContent", _data));//删除时 保存数据};/** 插入链接* cell 单元格*/U.MD.O.E.RC.insertLink = function (cell) {    U.UF.E.excelAddHref();}/*-------------------------------------------------------------------------- 以下右键待开发--------------------------------------------------------------------------*//** 插入图片* cell 单元格*/U.MD.O.E.RC.insertImg = function (cell) {    U.Alert("暂未开发!");}/** 清除样式* cellList 单元格集合*/U.MD.O.E.RC.clearStyle = function (cellList) {    var _eiditorBox = $("#U_MD_O_E_editorBox")[0],  //获取单元格的父元素        _cellCheckd = $(".U_MD_O_E_cellCheckd");    //获取单元格    for (var i = 0; i < _cellCheckd.length; i++) {  //for循环遍历单元格        _cellCheckd[i].style.fontWeight = "";        _cellCheckd[i].style.fontStyle = "";        _cellCheckd[i].style.textDecoration = "";        _cellCheckd[i].style.textAlign = "";        _cellCheckd[i].style.verticalAlign = "";        _cellCheckd[i].style.display = "";          //单元格清除样式        if (_cellCheckd[i].children[0])             //这边判断为第一个子元素            _cellCheckd[i].children[0].style.verticalAlign = "";        _cellCheckd[i].style.color = "";        _cellCheckd[i].style.backgroundColor = "";        _cellCheckd[i].style.fontFamily = "";        _cellCheckd[i].style.fontSize = "";         //清除第一个子元素的样式    }    _eiditorBox.style.fontWeight = "";    _eiditorBox.style.fontStyle = "";    _eiditorBox.style.textDecoration = "";    _eiditorBox.style.textAlign = "";    _eiditorBox.style.verticalAlign = "";    _eiditorBox.style.color = "";    _eiditorBox.style.fontFamily = "";    _eiditorBox.style.fontSize = "";                //清除单元格父元素的样式}/** 清除内容* cellList 单元格集合*/U.MD.O.E.RC.clearContent = function (cellList) {    var _cellList = U.UF.C.toArray($(".U_MD_O_E_cellCheckd")), //选中的div        _dataArr = [];                                          //声明一个数组    for (var i = 0; i < _cellList.length; i++) {                //for循环遍历选中的单元格        if (_cellList[i].innerText) {                           //判断选中单元格的内容            _cellList[i].innerText = "";                        //清除内容            var _data = {                row: _cellList[i].row,                col: _cellList[i].col,                content: _cellList[i].innerHTML,                innerText: _cellList[i].innerText              //之所以要发innerText 是因为要用来判断data数据里单元格的内容如果被改为空 则删除掉该单元格的数据             };                                                 //将内容打包给后台            _dataArr.push(_data);        }    }    U.MD.O.E.dataChange(U.MD.O.E.excelInfo("blur", _dataArr));    //聚焦时 保存数据}/** 设置列宽* startCol 开始列* endCol 结束列* colWidth 列宽*/U.MD.O.E.RC.cBoardsetWidth = function (startCol, endCol, colWidth) {    var _cBoardList = U.UF.C.toArray($(".U_MD_O_E_column")),    //声明变量为表格列        _setcBArr = _cBoardList.filter(function (el) {            return el.colname >= startCol && el.colname <= endCol && el.offsetWidth !== (+colWidth);        }),                                                     //创建一个包含新数组,测试开始列到结束列的列宽,通过时放入数组        _dataArr = [],        _colBoard = $(".U_MD_O_E_colBoard")[0];        _setcBArr.forEach(function (el) {                       //for循环遍历列板        _moveDis = colWidth - el.offsetWidth;        var data = {                                            //声明数组            initWidth: el.offsetWidth,            colName: el.colname,            moveDis: _moveDis        }        el.style.width = colWidth + "px";        _colBoard.style.width = _colBoard.offsetWidth + _moveDis + "px"; //设置列宽        _dataArr.push(data);    });    U.MD.O.E.BC.colExpandingEnd(_dataArr);}/** 隐藏列* startCol 开始列* endCol 结束列*/U.MD.O.E.RC.cBoardHide = function (startCol, endCol) {    U.Alert("暂未开发!");}/** 取消隐藏列* startCol 开始列* endCol 结束列*/U.MD.O.E.RC.cBoardCancelHide = function (startCol, endCol) {    U.Alert("暂未开发!");}/** 设置行高* startRow 开始行* endRow 结束行* rowHeight 行高*/U.MD.O.E.RC.rBoardsetHeight = function (startRow, endRow, rowHeight) {    var _rBoardList = U.UF.C.toArray($(".U_MD_O_E_row")), //声明变量为表格列        _setrBArr = _rBoardList.filter(function (el) {            return el.rowname >= startRow && el.rowname <= endRow && el.offsetHeight !== (+rowHeight);        }),                                                 //创建一个包含新数组,测试开始列到结束列的列宽,通过时放入数组        _dataArr = [],        _rowBoard = $(".U_MD_O_E_rowBoard")[0];    _setrBArr.forEach(function (el) {        _moveDis = rowHeight - el.offsetHeight;        var data = {//声明数组            initHeight: el.offsetHeight,            rowName: el.rowname,            moveDis: _moveDis        }        el.style.height = rowHeight + "px";        _rowBoard.style.height = _rowBoard.offsetHeight + _moveDis + "px"; //设置列宽        _dataArr.push(data);    });    U.MD.O.E.BC.rowExpandingEnd(_dataArr);}/** 隐藏行* startRow 开始行* endRow 结束行*/U.MD.O.E.RC.rBoardHide = function (startRow, endRow) {    U.Alert("暂未开发!");}/** 隐藏行* startRow 开始行* endRow 结束行*/U.MD.O.E.RC.rBoardCancelHide = function (startRow, endRow) {    U.Alert("暂未开发!");}
 |