如何通过编程方式将复选框控件添加到Excel单元格,或者选中或取消选中现有复选框

问题描述:

我在C#中使用Excel COM对象,并且想要将复选框动态插入到Excel工作表中并使其选中或取消选中条件。如何通过编程方式将复选框控件添加到Excel单元格,或者选中或取消选中现有复选框

OR

如何可以标记为在Excel工作表检查现有复选框编程。 我环顾四周,我没有找到任何解决方案。

您可以随时在MS Excel中记录一个宏,它会给你一个关于如何用Excel对象来完成某些事情的好主意。例如,记录您的问题宏时,它出来用下面的代码:

ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _ 
     DisplayAsIcon:=False, Left:=65.25, Top:=24, Width:=108, Height:=21). _ 
     Select 

我希望从这里可以看到需要做的到的工作表上插入复选框什么。

这里有更详细的解释(Visual Studio 2010和C#): 1.火了Visual Studio和创建新的项目(Windows应用程序或控制台应用程序) 2.右键单击引用,然后选择“添加引用” 3 。选择COM引用并添加Microsoft Excel xx.x对象库(在我的情况下,xx.x是14.0,即Excel 2010)。 4.某处在你的代码(如主或按钮的某个点击某些功能)添加以下代码:

// Start excel 
Microsoft.Office.Interop.Excel.Application oXL = new Microsoft.Office.Interop.Excel.Application(); 
oXL.Visible = true; 

// Get a sheet 
Microsoft.Office.Interop.Excel._Workbook oWB = (Microsoft.Office.Interop.Excel._Workbook)oXL.Workbooks.Add(System.Reflection.Missing.Value); 
Microsoft.Office.Interop.Excel._Worksheet oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet; 

// Get ole objects and add new one 
Microsoft.Office.Interop.Excel.OLEObjects objs = oSheet.OLEObjects(); 

// Here is the method that is posted in the answer 
Microsoft.Office.Interop.Excel.OLEObject obj = objs.Add("Forms.CheckBox.1", 
    System.Reflection.Missing.Value, 
    System.Reflection.Missing.Value, 
    false, 
    false, 
    System.Reflection.Missing.Value, 
    System.Reflection.Missing.Value, 
    65.25, 
    24, 
    108, 
    21); 
// Here, you are making it checked. obj.Object is dynamic, so you will not get help from visual studio, but you know what properties CheckBox can have, right? 
obj.Object.Value = true; 

我希望这有助于。

+0

谢谢@vucetica为你回答,但我怎么能在C#中实现这一点,因为宏是一个VB代码? –

+0

有什么办法可以在Excel工作表中标记为已选中的复选框吗? –

+0

我认为你已经有了一些代码,你在做Excel自动化。这可能是另一个问题,你可以在网上找到许多资源,从msdn开始:http://support.microsoft.com/kb/302084我还没有尝试将复选框放在excel的spreadseet上,但是一旦你得到“ActiveSheet “对象,你会发现将VBA代码转换为C#调用非常容易,因为从VBA代码中可以看出需要调用哪些方法以及使用哪些参数(COM组件具有相同的接口,而不管使用哪种语言他们)。 –