• LinqToExcel 简洁与优美开源库


    转载:https://www.cnblogs.com/codefish/archive/2013/04/08/3009098.html

    正在做项目,同事问道有啥简单的方法读取excel到DataTable里面呢?

       想也不想直接回到NPOI呀,我觉得满不错的,同事说太麻烦了,要不你找找看。反正手上的项目做的差不多的,习惯性的打开google,感觉已经有了LinqToXml,那LinqToExcel呢?没成想一搜出来了.

    地址:https://code.google.com/p/linqtoexcel/

    在使用之前:

    1.添加引用

    LinqToExcel.dll

    Remotion.Data.Linq.dll

    2.添加命名空间

    using LinqToExcel;

     

    //取得数据,只需要一行代码
     
    var execelfile = new ExcelQueryFactory(excelfilename.xls);

      如何取到相应的表呢?

    //紧接楼上
    
    var tsheet = excelfile.Worksheet(0);

      此时得到是没有进行相应映射的(row)行列集合.

    一个简单的查询:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var excelfile = new ExcelQueryFactory("1.xls");
    var tsheet = excelfile.Worksheet(0);<br> //查询30岁以上的人的名字
    var query = from in tsheet
                where p["Age"].Cast<int>() > 30
                select p;
    foreach (var item in query)
    {
     Console.WriteLine("Name is {0}",item[0].Value.ToString());
    }
    Console.Read();

    查询结果:

    那如何转成相应的实体集合呢?

    class Program
       {
           static void Main(string[] args)
           {
               var excelfile = new ExcelQueryFactory("1.xls");
               //用另一种方法取得实体数据集
               var tsheet = excelfile.Worksheet<Person>(0);
               var query = from p in tsheet
                           where p.Age > 30
                           select p;
               foreach (var item in query)
               {
                   Console.WriteLine("Name is {0}", item.Name);
               }
               Console.Read();
           }
       }
     
       public class Person
       {
           public string Name { get; set; }
           public int Age { get; set; }
           public string Address { get; set; }
           public Person() { }
           public Person(string _name, int _age, string _address)
           {
               this.Name = _name;
               this.Age = _age;
               this.Address = _address;
           }
       }

    结果:

    这里需要注意的一点:

    表头名字如果是英文,(区分大小写)必须与属性名保持一致,要不然会报错的----支持中文属性名和表头

    如果将得到的数据集绑定到控件的时候,请最后转List集合:

    Winform示例:

    后台代码:

    前台效果:

    总结:感觉这个库文件用起来简单,实用,操作方便,而且结合了Linq的查询特性,excel版本不仅支持03,而且连wps表格都支持(后缀名为.et),csv文件更不在话下了。

    附上相关的链接:

    google code:https://code.google.com/p/linqtoexcel/

    github:https://github.com/paulyoder/LinqToExcel

    download:https://code.google.com/p/linqtoexcel/downloads/detail?name=LinqToExcel_1.7.0.zip&can=2&q=

  • 相关阅读:
    人工智能第三课:数据科学中的Python
    人工智能第二课:认知服务和机器人框架探秘
    人工智能第一课:使用分类算法预测糖尿病
    如何加入Microsoft Teams 技术社区
    Python在Office 365 开发中的应用
    《Office 365开发入门指南》上市说明和读者服务
    基于Microsoft Graph打造自己的Timeline应用
    Office 365 应用开发的 .NET Core 模板库
    拥抱开源,Office 365开发迎来新时代
    Excel as a Service —— Excel 开发居然可以这么玩
  • 原文地址:https://www.cnblogs.com/y114113/p/10813861.html
Copyright © 2020-2023  润新知