导出EXCEL时,合并单元格时如果我用
xlSheet1.Range(xlSheet1.Cells(i, 10), xlSheet1.Cells(i, 11)).Merge(True)会出错,但如果我将其中的i直接换成数字就没问题了,这是怎么回事啊,请问怎么解决啊??

解决方案 »

  1.   

    http://zhidao.baidu.com/question/86233404.html
      

  2.   

    http://hi.baidu.com/vs45244x34/blog/item/5bd6253f8a8d273a71cf6c2b.html
    function JsOutPutExcel(btn,TabId,strCols,sTitle,sHeader,sFooter)
    {
    btn=document.getElementById(btn);
    btn.style.cursor = "wait";
     event.returnValue = false;
     var tab = document.getElementById(TabId);
    // alert("OK");
     if(tab==null)
     {
     alert("缺少表格对象");
     btn.style.cursor = "hand";
     return;
     }var t = tab.firstChild;
        var rows = t.childNodes.length;
    //    alert(t.nodeName); //test
    //alert(rows);
    //总列数
    var tds = t.childNodes[0].childNodes.length;
       var cols = 0;//合并的列数
        for(var i=0;i<tds;i++){
            var td = t.childNodes[0].childNodes[i];
            if(parseInt(td.colSpan)>1){
                cols += parseInt(td.colSpan);
            }
            else{
                cols++;
            }
        }
    /////////////////////////////创建excel文档
    var oXL;
        try{
            oXL = new ActiveXObject("Excel.Application"); 
        }catch(e){
            alert("请确认已经安装了Excel并允许运行Excel!");
            btn.style.cursor = "hand";
            return;
        }
     oXL.Workbooks.Add(); 
        var obook = oXL.ActiveWorkBook; 
        var osheets = obook.Worksheets;
        var osheet = obook.Sheets(1);
        var xlrow = 1;        //添加标题
        if((sTitle == "") || (typeof(sTitle)=="undefined") || (sTitle==null)){
    //        var t_tdHeadc = document.getElementById("tdHeadc");
    //        if(t_tdHeadc != null){
    //            sTitle = t_tdHeadc.innerText;
    //            var sk = sTitle.lastIndexOf("-->")+3;
    //            sTitle = sTitle.substring(sk);
    //        }
        }
        osheet.Cells(1, 1) = "数据导出标题";
        osheet.Range(osheet.Cells(xlrow, 1),osheet.Cells(xlrow,cols)).Select(); //选择该列
        oXL.Selection.HorizontalAlignment = 3;                          //居中
        oXL.Selection.MergeCells = true;
        xlrow++;  //小标题
        if((sHeader == "") || (typeof(sHeader)=="undefined") || (sHeader==null)){ 
            sHeader = ""; 
        }        
        if(sHeader != ""){
            osheet.Cells(2, 1) = "设置小标题";
            osheet.Range(osheet.Cells(xlrow, 1),osheet.Cells(xlrow,cols)).Select(); //选择该列
            //oXL.Selection.HorizontalAlignment = 3;                          //居中
            oXL.Selection.MergeCells = true;
            xlrow++;
        }
        
         strCols = ","+strCols+",";//开始序列号
         var aRowSpans = new Array();
        for(var i=0;i<cols;i++){
            aRowSpans[i] = 1;
        }
        var isProgressErr = false;
        
        for(var i = 0; i < rows; i++){
            //btn.value = i;
            if(!isProgressErr){
                try{
                    win.m_pub_wzs_progress_show(rows,i+1);
                }
                catch(e){
                    isProgressErr = true;
                }
            }
            
            var row = t.childNodes[i];
            var xlcol =0;            
            var viwCol = -1; //所在表格的位置,指显示位置,如果有行合并时,会与列索引不一致
            var colInx = -1;
            var colSpans = 1;
            
            for(var h = 0; h < cols; h++){
                if(aRowSpans[h]>1){
                    xlcol++;
                    aRowSpans[h]--;
                    viwCol++;
                    continue;
                }
                else{
                    colInx++;
                }
    //            alert("xlcol"+xlcol);
    //            alert("viwCol"+viwCol);
    //            alert("colInx"+colInx);
    //            alert("colSpans"+colSpans);
    //            alert("row"+row);
                
                var td = t.childNodes[i].childNodes[colInx];
                if(td == null) continue;
                colSpans = td.colSpan;
                var rowSpan = td.rowSpan;
                if(isNaN(rowSpan)) rowSpan = 1;
                for(var k=0;k<td.colSpan;k++){
                   viwCol++;
                   xlcol++;
                   aRowSpans[viwCol] = rowSpan;
                }
                
                h+=td.colSpan-1; //跳过合并列
                if(td.className=="hideNode"){
                    xlcol--;
                    continue;
                }
                var s = "";
                 if(td.hasChildNodes() && td.firstChild.nodeName.toLowerCase()=="input"){
                    if(td.firstChild.type.toLowerCase()=="text"){
                        s = td.firstChild.value;
                    }
                    else if(td.firstChild.type.toLowerCase()=="radio"){   //如果是单选框, 遍历该框所有单选框,找到选择的值
                        for(var k=0;k<td.childNodes.length;k++){
                            var cn = td.childNodes[k];
                            if(cn.nodeName.toLowerCase()=="input" && cn.type.toLowerCase() == "radio" && cn.checked){
                                s = cn.value;
                                break;
                            }
                        }
                    }
                }
                else{
                    s = td.innerText;
                }
                if(strCols.indexOf("," + (xlcol-1) + ",")!=-1){
                    osheet.Cells(xlrow,xlcol).NumberFormatLocal = '@';
                }
                if(td.rowSpan>1 || td.colSpan>1){
                    osheet.range(osheet.cells(xlrow,xlcol),osheet.cells(xlrow-1+td.rowSpan, xlcol-td.colSpan+1)).Select();
                    oXL.Selection.MergeCells = true;       
                    osheet.Cells(xlrow,xlcol).HorizontalAlignment = 3;
                    //osheet.cells(i+td.rowSpan, xlcol-td.colSpan+1).value = s;
                    osheet.Cells(xlrow,xlcol-td.colSpan+1).value = s;//m_splitLen(s,30,'\r\n');
                }else{
                    osheet.Cells(xlrow,xlcol).value = s;//m_splitLen(s,30,'\r\n');
                }
                
                }
                 xlrow++;   
    }  //添加表尾
        if((sFooter == "") || (typeof(sFooter)=="undefined") || (sFooter==null)){ 
            sFooter = "";
        }            
        var d = new Date();
        var sUser = "";
        if((window.parent != null) && (window.parent.parent != null)){
            try{
                sUser = window.parent.parent.bottomFrame.document.getElementById("labUser").innerText.replace("用户:","").replace(/ /g,"");
            }
            catch(ex){
            }                
        }
        var sFooterDefault = " 制表人:" + sUser + "    制表时间:" + d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds() + "    ";
        osheet.Cells(xlrow, 1) = sFooterDefault + sFooter;
        osheet.Range(osheet.Cells(xlrow, 1),osheet.Cells(xlrow,cols)).Select(); //选择该列//oXL.Selection.HorizontalAlignment = 4;                          //居中
        oXL.Selection.MergeCells = true;
        osheet.Range(osheet.Cells(1, 1),osheet.Cells(1,1)).Select(); //选择第一个单元格列
        osheet.Columns.AutoFit();   //自动列宽
        for(var i=1;i<xlrow;i++){
            osheet.Rows(i).RowHeight = osheet.Rows(i).RowHeight + 6;   //自动大小后上下无边距,需要增加高度,要不太挤。
        }    
        if(!isProgressErr){         //关闭进度条
            win.close();
        }
        oXL.Visible = true;
        oXL.UserControl = true;
        
        oXL = null;
        obook = null;
        osheets = null;
        osheet = null;
        
        btn.style.cursor = "hand";
    }
      

  3.   

    提示错误:异常来自 HRESULT:0x800A03EC
    请问下各位,这个怎么搞??
      

  4.   


    //仅供参考
    range = worksheet.get_Range("A1", "B2");
    range.Merge(Missing.Value);
    range.Font.Bold = true;
    range.Font.Size = 16;
    range.Value2 = "Test";
      

  5.   

    http://topic.csdn.net/u/20071012/11/9aff9740-a4a4-4b2e-a2d1-14784ad5e1af.html
    http://blog.csdn.net/luckisok/archive/2009/10/07/4638834.aspx你的i是不是从0开始的?