c# - 将类属性映射到 Excel/电子表格列名的问题(使用 LinqToExcel 库时)

标签 c# .net excel linq linq-to-excel

下面是我的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/

相关文章:

c# - 奇怪的 WPF 数据绑定(bind)行为

vba - 使用 Workbook.Close 时 Excel 未完全关闭

excel - 使用数组公式检查过去 12 个月内是否结束了类似的契约(Contract)

c# - 无法捕获 Winforms 中未处理的异常

C#通过FTP下载所有文件和子目录

excel - VB Excel宏代码错误-msxml3.dll -2146697211系统无法找到指定的资源

c# - HtmlAgilityPack 和 Selenium Webdriver 返回随机结果

c# - 查找与其他列表元素有 3 个属性相似的列表元素,然后将第二个元素的值添加到第一个元素

c# - 为什么会收到InvalidOperationException?

c# - TransformToAncestor 给我错误的转换