LinqToExcel 简洁与优美开源库

   正在做项目,同事问道有啥简单的方法读取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)行列集合.

一个简单的查询:

 var excelfile = new ExcelQueryFactory("1.xls");
 var tsheet = excelfile.Worksheet(0);
//查询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=

 

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我们读取和写入Excel 经常使用NPOI工具,如果我们的需求只是需要读取Excel,可以考虑使用LinqToExcel这个组件。这个组件用起来简单、实用、操作方便,而且结合了Linq的查询特性,excel版本不仅支持2003,而且连wps表格都支持(后缀名为.et),csv文件更不在话下了。项目地址:https://github.com/paulyoder/LinqToExcel在使用之前:1.添加引用,通过Nuget 来添加是最方便的了,这里要注意的32/64问题。LinqToExcel.dll Remotion.Data.Linq.dll2.添加命名空间using LinqToExcel;//取得数据,只需要一行代码var execelfile = new ExcelQueryFactory(sample.xls);  如何取到相应的表呢?//紧接楼上var tsheet = excelfile.Worksheet(0);  此时得到是没有进行相应映射的(row)行列集合.一个简单的查询: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();    那如何转成相应的实体集合呢? LinqToExcel还具有Mapping 功能,如果类的属性名和Excel里的表头名字如果是英文,(区分大小写)必须与属性名保持一致,支持中文属性名和表头。接着就是一个常遇到的需求,虽然说 Excel 的字段定义是英文,但是读出来的时候必须要是更有意义的字词,这时候就可以利用 LinqToExcel 的 AddMapping 功能来达到。 github:https://github.com/paulyoder/LinqToExcelnuget: https://www.nuget.org/packages/LinqToExcel/ 和 https://www.nuget.org/packages/LinqToExcel_x64/  标签:LinqToExcel
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值