以下是我的人员类
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Gender { get; set; }
}
以下是我的代码尝试使用LinqToExcel DLL从ExcelSpreadSheet读取
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 = from excel.Worksheet(“Bob1”)中的x时,我可以看到对象bob正在填充一些数据。 但是,仅选择并填写性别值。名称和年龄值分别检索为null和0。 有人可以帮我解决这个问题吗?谢谢
答案 0 :(得分:3)
由于属性和列名称完全相同,因此您无需使用AddMapping()
执行任何映射
我猜测为什么没有返回Name和Age值,电子表格中的列名称之前或之后可能会有额外的空格。
您可以使用GetColumnNames()
方法检索列名列表。 (这是该方法的文档:https://github.com/paulyoder/LinqToExcel#query-column-names)