0

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

或者

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

4

1 回答 1

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. 右键单击​​引用并选择“添加引用” 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;

我希望这有帮助。

于 2012-01-20T04:35:53.027 回答