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

时间:2012-01-20 00:52:15

标签: c# visual-studio office-interop excel-interop office-automation

我在C#中使用Excel COM对象,并希望动态地将复选框插入Excel工作表,并根据条件选中或取消选中它。

OR

如何以编程方式在Excel工作表中选中现有复选框。  我环顾四周,没有找到任何解决方案。

1 个答案:

答案 0 :(得分:3)

您始终可以在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.右键单击References并选择“Add Reference” 3.选择COM引用并添加Microsoft Excel xx.x对象库(在我的情况下,xx.x是14.0,即Excel 2010)。 4.代码中的某处(某些功能如Main或某些按钮单击)添加以下代码:

// 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;

我希望这会有所帮助。