[英]how to cast COM object type to Excel.Checkbox type
我在excel中添加了一個復選框,並且在將類型為'System .__ ComObject'的COM對象轉換為接口類型'Microsoft.Office.Interop.Excel.CheckBox'時遇到了問題,我們將不勝感激! 我正在使用Visual Studio 2008和Office 2007開發Web應用程序。此行發生錯誤:-chkBx =(Microsoft.Office.Interop.Excel.CheckBox)obj;
Microsoft.Office.Interop.Excel.OLEObjects objs = (Microsoft.Office.Interop.Excel.OLEObjects)mWSheet1.OLEObjects(System.Reflection.Missing.Value);
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,
234,
234,
108,
21);
Microsoft.Office.Interop.Excel.CheckBox chkBx;
chkBx = (Microsoft.Office.Interop.Excel.CheckBox)obj;
chkBx.Value = true;
chkBx.Caption = "xyz";
在我看來,您無法投射它,因為它根本沒有實現該接口。 您可以as
如下所述使用as
運算符來檢查System.__ComObject
支持不進行System.__ComObject
的接口,並因此引發異常: 如何:使用Visual C#.NET檢查COM對象的類型(System .__ ComObject) 。
我想知道您是否使用錯誤的方法將復選框添加到工作表中。 不是通過Microsoft.Office.Tools.Excel.ControlCollection
進行訪問的更常見方法,如此處所述: 在運行時將控件添加到Office文檔 。
如果您使用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");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.