簡體   English   中英

如何將COM對象類型轉換為Excel。

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM