如何通过编程方式将复选框控件添加到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;
我希望这有助于。
谢谢@vucetica为你回答,但我怎么能在C#中实现这一点,因为宏是一个VB代码? –
有什么办法可以在Excel工作表中标记为已选中的复选框吗? –
我认为你已经有了一些代码,你在做Excel自动化。这可能是另一个问题,你可以在网上找到许多资源,从msdn开始:http://support.microsoft.com/kb/302084我还没有尝试将复选框放在excel的spreadseet上,但是一旦你得到“ActiveSheet “对象,你会发现将VBA代码转换为C#调用非常容易,因为从VBA代码中可以看出需要调用哪些方法以及使用哪些参数(COM组件具有相同的接口,而不管使用哪种语言他们)。 –