我如何读取Excel ListObject的数据绑定

我有一个VS 2010 Excel 2007工作簿应用程序。 我有一个ListObject通过绑定源绑定到对象数据源。 我想能够确定我ListObject的ListColumns集合中的任何给定的ListColumn obect的对象的属性是绑定的。 在下面的示例中,我使用列名查找绑定到“Field1”属性的列。 但是,在我的情况下,列名可以不同于属性名称。 在ListColumn对象上没有DataMember,DataPropertyName或类似的属性,我该如何计算哪个列绑定到哪个属性?

鉴于下面的类和ListObject,我想能够使用下面的代码:

return FindColumn(MyDataListObject, "Property1") Public Class MyData Public Property Field1 As String Public Property Field2 As Date End Class Public Function FindColumn(ByVal listObject As ListObject, ByVal propertyName As String) As ListColumn For Each col As ListColumn In listObject.ListColumns If col.Name = propertyName Then Return col End If Next Return Nothing End Function 

我有类似的情况,我需要Excel上的数字绑定列。

不幸的是,VSTO隐藏了存储信息的字段。

通过System.Reflection访问这些信息的唯一方法。

看下面的小例子:

  public static string[] GetListObjectMappedColumns(ListObject listObject) { Tools.ListObject vstoListObject = Globals.Factory.GetVstoObject(listObject); FieldInfo fieldInfo = vstoListObject.GetType().GetField("mappedProperties", BindingFlags.Instance | BindingFlags.NonPublic); object value = fieldInfo.GetValue(vstoListObject); if (value is PropertyDescriptor[]) { List<string> result = new List<string>(); foreach (PropertyDescriptor propertyDescriptor in (PropertyDescriptor[])value) result.Add(propertyDescriptor.Name); return result.ToArray(); } return null; } 

我希望能帮到你!

Teobaldo