zoukankan      html  css  js  c++  java
  • LinqToExcel [转]

     

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

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

       想也不想直接回到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 p 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=

  • 相关阅读:
    《大话数据结构》第9章 排序 9.9 快速排序(下)
    [HTML5 DOM] dispatchEvent
    [AWS SAP] Exam Tips 2 Continues Improvement for Existing Solutions
    遇见C++ PPL:C++ 的并行和异步
    遇见C++ AMP:在GPU上做并行计算
    遇见C++ Lambda
    遇见C++ AMP:GPU的线程模型和内存模型
    服务器推技术
    转http状态码
    extjs同步与异步请求互换
  • 原文地址:https://www.cnblogs.com/Jenny90/p/3530846.html
Copyright © 2011-2022 走看看