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