北极冰点水 .NET 天空------天空是一个人永远也走不完的大路, 呼吸, 歌唱, 向着阳光

给予我们的誓言 以凝固不化的可能

导航

Excel interrop 操作Excel 单元格合并功能的一点小经验

在C#.net 调用Excel运行库操作Excel合并功能时, 当调试到单元格合并时,出现进程挂起的状态,百思后发现:Excel单元格合并时,如果单元格内有多个值,会弹出对话框.由于调用的Application时隐藏的,所以看不见对话框,导致进程挂起等待.
解决办法:先把要合并的单元格的值清除(设成缺省值),然后在合并,完成后在给合并后的单元赋值即可.
且合并单元格的地址以第一格有效,其它无效,但不会抛异常;
代码片断如下:

      Excel.Sheets sheets = book.Worksheets;
      Excel.Worksheet sh = (Excel.Worksheet) sheets.get_Item(sheet);
      Excel.Range range = null;

        range = (Excel.Range) sh.get_Range(begin, end);
    
        range.Value2 = Type.Missing;//如果不加这句,那么如果合并的单元格里有值的话,系统会弹出对话信息,由于用Application visible=false的方式,会引起等待,应用就挂掉了
        range.Merge(Type.Missing);      
        range.Value2 = input;
        System.Runtime.InteropServices.Marshal.ReleaseComObject(range);
         range = null;

       System.Runtime.InteropServices.Marshal.ReleaseComObject(sh);
        sh = null;

        System.Runtime.InteropServices.Marshal.ReleaseComObject(sheets);
        sheets = null;
   

posted on 2005-11-15 10:11  北极冰点水  阅读(2066)  评论(1)    收藏  举报