如何使用C#在Excel下拉列表中获取值

我正在寻找打开和阅读Excel文件的代码,包括2010年的任何版本的Excel.我的一个列中有一个下拉列表.我需要在下拉列表中获取所选项目的值.我最终希望将这些值填充到业务对象中.

如果有人要分享一些代码,请告诉我.

我正在使用C#和Visual Studio 2010.

谢谢.

最佳答案 我知道ActiveX组合和表单下拉列表的VBA,基于此,我可以为表格下拉列表给出一些非常不合格的c#笔记,这个组合还没有我.

使用来自:http://support.microsoft.com/kb/302084的笔记

//Get a new workbook.
oWB = (Excel._Workbook)(oXL.Workbooks.Open("C:\\Docs\\Book1.xls"));
//3rd Sheet
oSheet = (Excel._Worksheet)oWB.Sheets.get_Item(3);

//This will return an index number
var i = oSheet.Shapes.Item("Drop Down 1").ControlFormat.Value;
//This will return the fill range
var r = oSheet.Shapes.Item("Drop Down 1").ControlFormat.ListFillRange;
oRng = oSheet.get_Range(r);
//This will return the value of the dropdown, based on the index
//and fillrange
var a =oRng.get_Item(i).Value;

//Just to check
textBox1.Text = a; 

这可能有助于ActiveX组合,但我只有一半让它工作:

using MSForm = Microsoft.Vbe.Interop.Forms;

<...>
Excel.OLEObject cbOLEObj = (Excel.OLEObject)workSheet.OLEObjects("ComboBox1");
MSForm.ComboBox ComboBox1 = (MsForm.ComboBox) cbOLEObj.Object; 
Console.WriteLine(ComboBox1.Text);

来自:http://www.eggheadcafe.com/community/aspnet/66/10117559/excel-get-value-from-a-combobox.aspx

点赞