object[] parameters = new object[2];
            parameters[0] = "A3:C3";
            parameters[1] = Missing.Value;
            object range = m_objSheet.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, m_objSheet, parameters);
            我现在想把"A3:C3"复制,然后插入到A3:C3行后面。
            我现在只能获取这个range,但是不知道复制这个行,然后把复制内容插入到当前行后面的代码怎么写?注意不考虑使用类似
Exexl obj = CreateObject(////)
Range range = obj.GetRange();
range.GetValue()这种代码。不用建议录制宏了,我录了,只是这段代码比较饶。肯定大侠给予帮助
程序采用com接口的写法,请大侠们提供类似com接口代码。

解决方案 »

  1.   

    问题补充:
    是execl操作,想把其中的一行复制,然后拷贝到另外一行的后面
      

  2.   

            ThisApplication = new Excel.Application();        ThisWorkbook = ThisApplication.Workbooks.Open("z:\\Book1.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);        ThisApplication.DisplayAlerts = false;        xlSheet = (Excel.Worksheet)ThisWorkbook.Worksheets.get_Item(1);        Excel.Range range = xlSheet.get_Range("A1", Type.Missing);        range.Value = "123";        Excel.Worksheet sheet1 = (Excel.Worksheet)ThisWorkbook.Worksheets.get_Item(2);        Excel.Range range1 = sheet1.get_Range("B1", Type.Missing);        range.Copy(range1);        ThisWorkbook.SaveAs("z:\\Book2.xls", Type.Missing, Type.Missing,                                        Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange,                                Type.Missing, Type.Missing, Type.Missing, Type.Missing); 可以看到,核心的代码是很简单的,就是选定一个源区域,然后指定另一个目标区域,调用源区域的Copy方法将内容整个复制到目标区域.
      

  3.   

    object value = range.value2;
    //这里选定需要写入值得range,假设为sourceRange
    sourceRange.value2 = value;
    //这里记得保存WorkBook
      

  4.   

    如果需要定位复制现有range后面的range,可以使用range.Row属性和range.Column属性确定现有的range左上角单元格距离上边框和左边框的单元格数,再通过range本身的Rows.Count和Columns.Count属性得到现range的行数和列数,最后通过加减法,拿到后面复制数据的range对象
      

  5.   

    此问题应该参考excel VBA接口文档。
      

  6.   


    这种代码我这边有,不考虑这种方式。
    楼上那些说看vba的就不考虑了,我不考虑用vba宏写代码,
    录制宏的方法也不行,代码露出来了,不知道怎么还原成c#代码中的com代码
      

  7.   

    不了解office com技术的当然不会,并非通用功能,不会不能说明任何问题啊。
      

  8.   

    com的效率实在太低了,而且需要客户端安装office建议使用Aspose.Cells.dll这篇介绍可以看看
    http://hi.baidu.com/%BA%CE%B3%B1/blog/item/9d1605fa374fd8839e5146fa.html
      

  9.   

    采用com的理由是 服务器那边安装office不受版本限制,当然不考虑98
      

  10.   

    这excel的操作我了解不深,学习学习 呵呵
      

  11.   

    COM接口 学习中 定下 我这边有很多例子 具体要哪个抱一下 ,
      

  12.   

    问题已经解决,我用c++导出office接口,然后用c++写了个com组件,再在c#里面调用,这坑爹的office组件,com组件参数根本就没有一个非常好的文档,vba更他妈坑爹。
      

  13.   

    12楼的方法是可以的我确定我以前操作EXCEL也是这种方法不过能用C++实现的话还是C++C#操作COM不如C++快