c#操作Excel中的控件

由于最近工作的需要,经常使用C#对excel进行编辑,但是由于有的excel中含有大量的控件所以,给工作带来了很多困扰。

  为了能够随心所欲的操纵这些控件查询了很多资料,现在将得到的一点心得记录下来。

   C#操作excel2007需要引入的dll

  Microsoft.Office.Interop.Excel (正常读写文件,这个就足够了)

  Microsoft.Vbe.Interop.Forms (这个是为了操作excel里的activeX控件)

  相信大家都知道excel2007中的控件分为2种:1.Form控件 2.activex控件

  

  //给命名控件起个别名方便写代码

  using Excel = Microsoft.Office.Interop.Excel;

  using MSForms = Microsoft.Vbe.Interop.Forms;

  //打开excel

  Excel.Application excelApp = new Excel.Application();

  //打开一个excel文件,open方法的参数大家可以去msdn上查询

  Workbook analyWK = excelApp.Workbooks.Open(inputfileName, Type.Missing, true, Type.Missing,

  Type.Missing, Type.Missing, Type.Missing, Type.Missing,

  Type.Missing, Type.Missing, Type.Missing, Type.Missing,

  Type.Missing, Type.Missing, Type.Missing);

  //这里取得的是第一个sheet,大家根据自己的需要选择自己要操作的sheet

  Worksheet WS = (Excel.Worksheet)analyWK.Worksheets[1];

  一下是对excel的控件的操作

  上边说到了excel中含有2种控件,对于不同的控件的操作方法不太一样

  对于Form控件的操作

  Worksheet WS = (Excel.Worksheet)analyWK.Worksheets[1];

  对于我们确定了要操作的worksheet可以直接调用Worksheet类中的方法直接拿出各种Form控件

    例如Checkbox:

  Excel.CheckBoxes a = (Excel.CheckBoxes)WS.CheckBoxes(Type.Missing);

  这样我们就得到了一组Checkbox,也就是当前sheet中的全部checkbox的列表。

  需要注意的是参数[Type.Missing],这个地方我试过很多别的内容都会出错,所以我们只能用这个来得到一个控件集合。

  得到这个集合以后,用下面的方法可以得到单个控件Item的参数从[1]开始

  Excel.CheckBox b = (Excel.CheckBox)a.Item(1);

  这个控件b得到以后,我们就可以随意的蹂躏她了

  对于ActiveX控件的操作

  ActiveX控件的操作比较麻烦,它不能直接通过Worksheet类中的方法直接取出,

  但是他也有比Form控件方便的地方,那就是他有name属性,可以通过name直接定位到一个控件上

   方法如下:

  Excel.OLEObject c = (Excel.OLEObject)WS.OLEObjects("chk");

  这样我们能够得到一个name是“chk”的Actived控件,但是现在我们还不能够操作这个控件

  我们需要把这个控件转换成他相应类型的控件

  例如他是一个CheckBox控件,用如下的方法把控件类型转换

  MSForms.CheckBox d = (MSForms.CheckBox)c.object();

  取值,取得的值是一个object需要大家自己根据需要转换

  object o = d.get_Value();

  赋值,赋值时候也是一个object而且是ref

  object o = true;

  d.set_Value(ref o);

   其他的

  object adaa = WS.Shapes.Count;//用于确定全部有图形的对象的数目,包括了各种控件

  WS.OLEObjects(Type.Missing)//得到了全部的ActiveX控件,然后可以用item方法得到其中某个控件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值