2010-11-09 4 views
3

Я ищу код для открытия и чтения файла Excel, любой версии Excel, включая 2010. Один из моих столбцов имеет выпадающее меню. Мне нужно получить значение выбранного элемента в раскрывающемся списке. В конечном итоге я захочу занести эти значения в бизнес-объект.Как получить значение в раскрывающемся списке Excel с помощью C#

Если у кого-то есть код для обмена, пожалуйста, дайте мне знать.

Я использую C# и Visual Studio 2010.

Спасибо.

+0

Это выпадающее меню ActiveX или раскрывающееся меню Forms? – Fionnuala

+0

Я не знал, что есть оба? У вас есть код для обоих? Я предполагаю, что выпадающие формы? –

+0

Выпадающее меню форм намного проще, поскольку оно может содержать ссылку на ячейку, которая содержит значение, поэтому все, что вам нужно сделать, это ссылка на ячейку. – Fionnuala

ответ

1

Я знаю VBA как для комбинации ActiveX, так и для выпадающего списка форм, и на основе этого я могу дать вам очень неопытные ноты для 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

+0

Продвигает ли он Stackoverflow, чтобы проголосовать за единственный ответ на вопрос, не добавив комментариев? – Fionnuala

+0

Отредактируйте свой ответ, чтобы я снова его проголосовал. Прошу прощения. –

+0

Нет проблем. Я вижу, что это может заслуживать просрочки голосования, и в этом случае записка была бы полезна. Также довольно легко проголосовать за ответ, пытаясь сделать что-то еще. – Fionnuala

Смежные вопросы