2009-10-06 82 views
1

从C#中我试图从一个Excel工作表读取数据到一个C#对象。读取Excel数据从下拉到C#对象数组

一切工作正常,除了一个小的细节,从下拉列表中的Excel数据。

不知何故,对于每个相应的Excel下拉列表条目,数组中的结果为空。

我的代码,以便下面远:

var range = sheet.get_Range("A1", "D3"); 

var valuearray = (Object[,])range.get_Value(XlRangeValueDataType.xlRangeValueDefault); 

只要单元格数据不是从Excel始发下拉列表valuearray得到正确的价值观。但只要数据来自下拉列表,valuearray条目就为空。

欣赏任何输入,丹娜:-)

回答

1

你看到的问题时,因为下拉心不是数据实际存储在范围对象本身。如果你看看你的WorkSheet对象,你会注意到一个DropDowns方法。这将返回一个DropDowns对象,然后您可以调用Item以获取单独的DropDown。从那里,你可以对内部下拉列表工作本身喜欢:

(assuming: using Excel = Microsoft.Office.Interop.Excel) 
Excel.DropDowns allDropDowns = YourWorkSheet.DropDowns(Type.Missing); 
Excel.DropDown oneDropdown = allDropDowns.Item(YourIndex); 

我已经没有改变钻进去获取项目从下拉列表中(仅增加更多与的AddItem),但是获取列表和获取选定的方法似乎是一个很好的开始。

+0

宾果游戏!!!非常感谢! – Daniel 2009-10-06 13:53:45

+0

@Wolfwyrd我试过使用这个,但收到一个异常:“mscorlib.dll中发生类型'System.Runtime.InteropServices.COMException'的未处理的异常 附加信息:DropDowns类的项目方法失败”您有任何想法为什么发生这种情况? – Alex 2016-02-26 09:13:37