是这样,我用C#写了一个Excel CodeBehind
然后要实现这么一个功能,点击一个按钮,把某一行的几个单元格合并起来。
就是类似下面的code:Excel.rng mergeRng = sheet1.getRng(sheet1.Cells[1,1],sheet1,Cells[1,3]);
mergeRng.merge(Type.Missing);结果呢……这段code放在ThisWorkbook_open里边调用就是好用的(写成一个函数,thisWorkbookOpen里边调用这个函数)但是同样的函数,在ThisWorkbook_open运行结束后,通过点击按钮调用就抱错……这是为什么啊……100分求助,多谢大家……

解决方案 »

  1.   

    出错信息是:HRESULT中的异常: 0x800A03EC。  at System.RuntimeType.ForwardCallToInvokeMember(String memberName,BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageDate& msgData)
    at Microsoft.Office.Interop.Excel.Range.Merge(Object Across)
    at....后边的也不用再写了……
      

  2.   

    我的ThisWorkbook_Open方法:
    protected void ThisWorkbook_Open()
    {
    try
    {
    Excel.Worksheet ws = (Excel.Worksheet) ThisWorkbook.Worksheets[1];
    this.merge_btn = (MSForms.CommandButton)this.FindControl("merge_btn");
    this.merge_btn.Click +=new Microsoft.Vbe.Interop.Forms.CommandButtonEvents_ClickEventHandler(merge_btn_Click);
    Excel.Range baseRng = ws.get_Range("A1",Type.Missing);
    this.merge(ws,baseRng,0,0,4);
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message + ex.StackTrace);
    }
    }
      

  3.   

    merge_Btn的点击事件:
    private void merge_btn_Click()
    {
    try
    {
    Excel.Worksheet ws = (Excel.Worksheet) ThisWorkbook.Worksheets[1];
    Excel.Range baseRng = ws.get_Range("A2",Type.Missing);
    this.merge(ws,baseRng,0,0,4);
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message + ex.StackTrace);
    return;
    }
    }