欢迎光临
我们一直在努力

一个简洁优美的.net 操作excel的开源库LinqToExcel

LinqToExcel是一个.net framework平台下开源项目,它主要实现了LINQ的语法查询Excel电子表格。类型之前的LINQToXXX如果你是LINQ语法糖爱好者那最适合您。

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

vs中可以直接通过Nuget来获取


安装完成后引用命名空间即可使用

using LinqToExcel;
var execelfile = new ExcelQueryFactory(excelfilename.xls);//excelfilename.xls是excel路径 
//取得表,如果不传数据默认读取的就是sheet1
var tsheet = excelfile.Worksheet(0);

常用方法介绍

        里面有一些常见的方法,如下:

Worksheet 获得工作表中的数据
WorksheetNoHeader 同上,但不包含标题
WorksheetRange 取得特定范围的数据
WorksheetRangeNoHeader 同上,但不包含标题
AddMapping 手动映射
AddTransformation 设置转换动作
GetWorksheetNames 取得所有工作表名称
GetColumnNames 取得所有列名称


自动添加映射

实体类属性名称跟Excel字段名称一样,那么它就自动进行映射。如下代码:

 void Main()
 {
     var fileName=System.IO.Path.Combine(@"D:\","学生基本信息.xlsx");
     var excelFile=new ExcelQueryFactory(fileName);
      
      //var excel=excelFile.Worksheet("sheet1");
     var excel=excelFile.Worksheet<Student>();//不传参数,默认读取的就是sheet1里面的数据(括号中可以传入字符串,也可以是索引)
     foreach (var element in excel)
     {
         element.Dump();
     }
}
  
 public class Student
 {
     public string Name {get;set;}
     public string No {get;set;}
     public int Age {get;set;}
}


手动添加映射

        如果实体类里面的定义的字段跟Excel里面的列名如果不是一一对应的,也不要紧,可以手动的添加映射,如我把Student里面的字段名都加上一个str前缀,手动添加映射也可以正常读取出来,代码如下:

void Main()
{
    var fileName=System.IO.Path.Combine(@"D:\","学生基本信息.xlsx");
    var excelFile=new ExcelQueryFactory(fileName);
     
     excelFile.AddMapping<Student>(d=>d.strName,"Name");
     excelFile.AddMapping<Student>(d=>d.strNo,"No");
     excelFile.AddMapping<Student>(d=>d.strAge,"Age");
     
    var excel=excelFile.Worksheet<Student>().Where(entity=>entity.strAge>12);//不传参数,默认读取的就是sheet1里面的数据
    foreach (var element in excel)
    {
        element.Dump();
    }
}
 
public class Student
{
    public string strName {get;set;}
    public string strNo {get;set;}
    public int strAge {get;set;}
}

未经允许不得转载:BkCoding » 一个简洁优美的.net 操作excel的开源库LinqToExcel

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址