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

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

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

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

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

LinqToExcel 简洁与优美开源库 随笔 第1张

在使用之前:

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();

查询结果:

LinqToExcel 简洁与优美开源库 随笔 第2张

 

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

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;         }     }

结果:

LinqToExcel 简洁与优美开源库 随笔 第3张

这里需要注意的一点:

LinqToExcel 简洁与优美开源库 随笔 第4张

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

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

Winform示例:

后台代码:

LinqToExcel 简洁与优美开源库 随笔 第5张

前台效果:

LinqToExcel 简洁与优美开源库 随笔 第6张

 

总结:感觉这个库文件用起来简单,实用,操作方便,而且结合了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=

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄