下面是我的Person类
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
问题是当我在 excel.Worksheet("Bob1") 中将断点设置到此行 var bob = from x 时,我可以看到对象 bob 正在填充一些数据。 但是,只有性别值被挑选和填写。姓名和年龄值分别被检索为空广告 0。 谁能帮我解决这个问题?谢谢
最佳答案
由于属性名和列名完全相同,因此您无需使用 AddMapping()
执行任何映射
我猜测为什么没有返回 Name 和 Age 值是因为电子表格中的列名称前后可能有额外的空格。
您可以使用 GetColumnNames()
方法来检索列名列表。 (这里是该方法的文档:https://github.com/paulyoder/LinqToExcel#query-column-names)
关于c# - 将类属性映射到 Excel/电子表格列名的问题(使用 LinqToExcel 库时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20705521/