Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将COM对象类型强制转换为Excel。复选框类型_C#_Office Interop_Excel Interop_Comobject - Fatal编程技术网

C# 如何将COM对象类型强制转换为Excel。复选框类型

C# 如何将COM对象类型强制转换为Excel。复选框类型,c#,office-interop,excel-interop,comobject,C#,Office Interop,Excel Interop,Comobject,我正在向excel添加一个复选框,我在将“System.\u ComObject”类型的COM对象强制转换为“Microsoft.Office.Interop.excel.checkbox”接口类型时遇到问题,如有任何帮助,将不胜感激!我正在使用VisualStudio2008和Office2007开发web应用程序。错误发生在此行:-chkBx=(Microsoft.Office.Interop.Excel.CheckBox)obj 在我看来,您不能强制转换它,因为它根本没有实现该接口。您可以

我正在向excel添加一个复选框,我在将“System.\u ComObject”类型的COM对象强制转换为“Microsoft.Office.Interop.excel.checkbox”接口类型时遇到问题,如有任何帮助,将不胜感激!我正在使用VisualStudio2008和Office2007开发web应用程序。错误发生在此行:-chkBx=(Microsoft.Office.Interop.Excel.CheckBox)obj


在我看来,您不能强制转换它,因为它根本没有实现该接口。您可以使用
as
操作符检查
系统.com对象是否支持不强制转换的接口,从而引发异常,如下所述:

我想知道您是否使用了错误的方法将复选框添加到工作表中。是不是像这里描述的那样更常见的方法:

如果您使用了
ControlCollection
,我认为您的代码最终会是这样的:

private void AddCheckBox()
{
    Worksheet vstoWorksheet = Globals.Factory.GetVstoObject(
        this.Application.ActiveWorkbook.Worksheets[1]);
    System.Windows.Forms.CheckBox checkbox = 
        new System.Windows.Forms.CheckBox();
    checkbox.Checked = true;
    checkbox.Text = "xyz"   
    vstoWorksheet.Controls.AddControl(234, 234, 108, 21, "checkbox1");
}

嗨,马丁,谢谢你的回答。我无法引用Microsoft.Office.Tools.Excel命名空间,我发现我需要与.net framework 3.5 sp1和visual studio 2008 sp1一起安装VSTO 3.0 sp1。有x86版本的VSTO可供下载,但是你知道在哪里可以找到x64版本吗?
private void AddCheckBox()
{
    Worksheet vstoWorksheet = Globals.Factory.GetVstoObject(
        this.Application.ActiveWorkbook.Worksheets[1]);
    System.Windows.Forms.CheckBox checkbox = 
        new System.Windows.Forms.CheckBox();
    checkbox.Checked = true;
    checkbox.Text = "xyz"   
    vstoWorksheet.Controls.AddControl(234, 234, 108, 21, "checkbox1");
}