2013-10-21 54 views
1

我一直在尋找網絡,但無法找到一種方法將細胞變成組合框(或者它們似乎有時稱爲下拉列表)?我正在使用Microsoft.Office.Interop.Excel版本14.0(運行時版本2.0.50727)。如何使用c#使Excel單元格成爲組合框?

+1

VBA是什麼樣子的?通過記錄動作的VBA宏,然後通過.NET使用相同的方法,我在Excel Interop中的一些更復雜的東西中取得了成功。 –

+0

當我轉到開發人員選項卡並單擊查看代碼時,我無法在我的參考表中看到任何VBA代碼。老實說,我不知道這張表是如何創建的。我上傳了我喜歡用C#重新創建的組合框的截圖。 http://imgur.com/xMCymTc – chhenning

回答

4

下面是我嘗試實現的解決方案:

Excel.Application App = null; 
Excel.Workbook Book = null; 

Excel.Worksheet Sheet = null; 

object Missing = System.Reflection.Missing.Value; 

try 
{ 
    App = new Excel.Application(); 
    Book = App.Workbooks.Add(); 

    Sheet = (Excel.Worksheet) Book.Worksheets[1]; 

    Excel.Range Range = Sheet.get_Range("B2", "B2"); 

    Range.Validation.Add(Excel.XlDVType.xlValidateList 
     , Excel.XlDVAlertStyle.xlValidAlertStop 
     , Excel.XlFormatConditionOperator.xlBetween 
     , "Item1,Item2,Item3" 
     , Type.Missing); 
    Range.Validation.InCellDropdown = true; 
    Range.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(255, 217, 217, 0)); 

    App.Visible = true; 
} 
finally 
{ 
    Base.ReleaseObject(Sheet); 
    Base.ReleaseObject(Book); 
    Base.ReleaseObject(App); 
} 
+0

在我的情況下,這隻在使用';'作爲項目分隔符而不是','時才起作用。另外,我必須在Range.Validation.Add之前調用'Range.Validation.Delete'來避免VSTO的異常。 –

+0

@MarekDzikiewicz:如果您的語言環境設置使用逗號作爲十進制分隔符,則會發生這種情況,那麼您需要使用; – DrDonut

1

那麼,一個Excel宿主.net組合框絕對存在。 這篇文章中的示例代碼有用嗎?

http://msdn.microsoft.com/en-us/library/ee259140(v=vs.100).aspx

Private Sub ExcelRangeAddComboBox() 

    Dim ComboBox1 As Microsoft.Office.Tools.Excel. _ 
     Controls.ComboBox = Me.Controls.AddComboBox(_ 
     Me.Range("A1", "B1"), "ComboBox1") 
    ComboBox1.Items.Add("First Item") 
    ComboBox1.Items.Add("Second Item") 
    ComboBox1.SelectedIndex = 0 

End Sub 

如果you'rr不熟悉開發插件,下面可能會幫助您開始: http://msdn.microsoft.com/en-us/library/cc442981(v=vs.100).aspx

和這裏的影片是非常有益的: http://msdn.microsoft.com/en-US/office/hh133459

+0

非常感謝您的建議。我可以在普通的WinForm應用程序中使用此代碼嗎? – chhenning

+0

不幸的是,我不這麼認爲(但我總是錯了!)根據我的經驗,所有與VSTO有關的東西都是針對辦公室特定COM對象的.Net包裝器。你可以得到的最接近的是在你的winforms表單中嵌入一個excel實例。例如,看這篇博文。 http://wblo.gs/Z5O只記得最終用戶必須安裝Excel。除此之外,可能需要查看第三方「Excel Like」控件。 – JFish222

相關問題