4

以下是我的人员类

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 x in excel.Worksheet("Bob1") 我可以看到对象 bob 正在填充一些数据。然而,只有 Gender 值被挑选和填写。 Name 和 Age 值分别作为空广告 0 检索。谁能帮我解决这个问题?谢谢

4

1 回答 1

3

由于属性和列名完全相同,因此您无需执行任何映射AddMapping()

我对为什么没有返回 Name 和 Age 值的猜测是电子表格中的列名之前或之后可能有额外的空格。

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

于 2013-12-20T15:42:54.977 回答