将类属性映射到Excel / Spreadsheet列名的问题(使用LinqToExcel库时)

以下是我的人员类

public class Person { public string Name { get; set; } public int Age { get; set; } public string Gender { get; set; } } 

以下是我的代码,试图从ExcelSpreadSheet使用LinqToExcel DLL读取

 public void UseLinqToExcel(string path) { var excel = new ExcelQueryFactory(); excel.FileName = path; excel.DatabaseEngine = LinqToExcel.Domain.DatabaseEngine.Ace; //Use Explicit Mapping excel.AddMapping<Person>(x => x.Name, "Name"); excel.AddMapping<Person>(x => x.Age, "Age"); excel.AddMapping<Person>(x => x.Gender, "Gender"); var bob = from x in excel.Worksheet<Person>("Bob1") select x; } 

以下是调用上述方法的代码

 public void ReadFromExcelSpreadSheet() { UseLinqToExcel(@"C:\temp\people.xls"); } 

这是我的ExcelSpreadSheet数据的示例。

 Name Age Gender ---- --- ------ John 23 Male Shannon 22 Female Joseph 21 Male 

问题是,当我设置我的断点这一行var bob =从excel.Worksheet(“Bob1”)中的x我可以看到对象bob被填充一些数据。 然而,只有性别值被选中并填写。名称和年龄值分别被检索为空广告0。 有谁能帮我解决这个问题吗? 谢谢

由于属性和列名称完全相同,因此不需要使用AddMapping()执行任何映射

我猜测为什么名称和年龄值没有被返回是电子表格中的列名称之前或之后可能会有额外的空格。

您可以使用GetColumnNames()方法来检索列名称的列表。 (这里是该方法的文档: https : //github.com/paulyoder/LinqToExcel#query-column-names )