目录:

1、常用方法介绍

2、查询符合条件的数据

3、手动添加映射

4、其他用法

 

1、常用方法介绍

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

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

        上次介绍的只是把表格里面的数据读取出来,但是列名没有读取出来,还有一种方法就是定义一个实体类,实体类属性名称跟Excel字段名称一样,那么它就自动进行映射。如下代码:

   1: void Main()

   2: {

   3:     var fileName=System.IO.Path.Combine(@"D:\","学生基本信息.xlsx");

   4:     var excelFile=new ExcelQueryFactory(fileName);

   5:      

   6:      //var excel=excelFile.Worksheet("sheet1");

   7:     var excel=excelFile.Worksheet<Student>();//不传参数,默认读取的就是sheet1里面的数据(括号中可以传入字符串,也可以是索引)

   8:     foreach (var element in excel)

   9:     {

  10:         element.Dump();

  11:     }

  12: }

  13:  

  14: public class Student

  15: {

  16:     public string Name {get;set;}

  17:     public string No {get;set;}

  18:     public int Age {get;set;}

  19: }

       输出结果如下:

2、查询符合条件的数据

         还可以对输出的结果进行一些条件过滤,比如找出年龄大于12岁的,只需要加上条件即可,代码如下:

var excel=excelFile.Worksheet<Student>().Where(entity=>entity.Age>12);

          Where里面传入的是一个Lamaba表达式,里面可以写任何条件;也可以不在这个后面用where,而是直接在结果集excel里面用linq语法去进行过滤;

3、手动添加映射

        如果实体类里面的定义的字段跟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;}

}

       运行结果如下:

4、其他一些用法

        读取某个范围内单元格的数据:

var excel=excelFile.WorksheetRange<Student>("A1","C4").Where(entity=>entity.strAge>12);

      还可以读取CSV文件,写法跟Excel文件一样。

参考:

http://www.dotblogs.com.tw/larrynung/archive/2010/12/02/19868.aspx

https://github.com/paulyoder/LinqToExcel(官网示例)

http://demo.tc/Post/639

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

Linq To Excel使用简介二的更多相关文章

  1. {Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解)

    Django基础七之Ajax 本节目录 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解) 一 Ajax简介 ...

  2. Windbg 脚本命令简介 二, Windbg command

    Windbg  脚本命令简介 二, Windbg  script command $<, $><, $$<, $$><, $$>a< (Run Scri ...

  3. {Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解)

    {Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解)   Django基础七之 ...

  4. LINQ学习之旅(二)

    一:查询表达式(LINQ)简介 LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性.已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译 ...

  5. MVC NPOI Linq导出Excel通用类

    之前写了一个模型导出Excel通用类,但是在实际应用中,可能不是直接导出模型,而是通过Linq查询后获取到最终结果再导出 通用类: public enum DataTypeEnum { Int = , ...

  6. 浅谈Excel开发:二 Excel 菜单系统

    在开始Excel开发之前,需要把架子搭起来.最直接的那就是Excel里面的菜单了,他向用户直观的展现了我们的插件具有哪些功能.菜单出来之后我们就可以实现里面的事件和功能了.Excel菜单有两种形式,一 ...

  7. 【转】【收藏】LINQ学习心得分享--------(二)LINQ语法详解

    原地址:http://blog.csdn.net/xuemoyao/article/details/8053444   通过上一章节的学习,相信大家已经掌握了学习LINQ的前期的准备知识.在这一节里, ...

  8. LinqToExcel: LINQ查询Excel电子表格

    Linq的强大人所共知,能不能将Linq扩展到读取excel呢? 答案当然是肯定的. LinqToExcel就是一个实现了使用Linq语法查询excel表格的.net开源类库. 在nuget搜索下载安 ...

  9. WPF Binding值转换器ValueConverter使用简介(二)-IMultiValueConverter

    注: 需要继承IMultiValueConverter接口,接口使用和IValueConverter逻辑相同. 一.MultiBinding+Converter 多值绑定及多值转换实例 当纵向流量大于 ...

随机推荐

  1. note01-计算机网络

    1.基础概述 三网: 电信网络.有线电视网络.计算机网络(连通&共享) 终端->z本地ISP->x地区IXP->y主干ISP 通信方式: C/S .P2P(即是client也 ...

  2. Haskell 与范畴论-函子、态射、函数

    范畴论基本概念 如果你是第一次听说范畴论(category theory),看到这高大上的名字估计心里就会一咯噔,到底数学威力巨大,光是高等数学就能让很多人噩梦连连.和搞编程的一样,数学家喜欢将问题不 ...

  3. python:验证客户端链接的合法性与socketserver

    一.验证客户端链接的合法性 from socket import * import hmac,os secret_key=b'linhaifeng bang bang bang' def conn_a ...

  4. Gym Gym 101147G 第二类斯特林数

    题目链接:http://codeforces.com/gym/101147/problem/G 题意:n个人,去参加k个游戏,k个游戏必须非空,有多少种放法? 分析: 第二类斯特林数,划分好k个集合后 ...

  5. 小草的Trouble学生信息管理系统

    小草最近上课学C++,在图书馆纠结了好久,决定做这个小东西,没想到遇到了好多困难,好吧,功夫不负有心人,小草也在敲代码中提高了不少. 小草硬是学了好几天,才搞完这个东西,也算是了结了小草的一个心结. ...

  6. linux shell——zsh的安装与使用

    Shell是在程序员与服务器间建立一个桥梁,它对外提供一系列命令,让我们得以控制服务器.常用的Bash就是Shell的一种,也是Linux下默认Shell程序.这里介绍一种更强大的.更人性化的Shel ...

  7. Spring 声明式事务管理方式

    声明式事务管理,基于AOP对目标代理,添加环绕通知,比编码方案优势,不具有侵入式,不需要修改原来的代码. 1.基于XML配置的声明式事务管理方案(案例)      接口Service public i ...

  8. Visual Studio IDE环境下利用模板创建和手动配置CUDA项目教程

    目前版本的cuda是很方便的,它的一个安装里面包括了Toolkit`SDK`document`Nsight等等,而不用你自己去挨个安装,这样也避免了版本的不同步问题. 1 cuda5.5的下载地址,官 ...

  9. python 并发编程之多线程

    一.线程理论 1.什么是线程 ​ 多线程(即多个控制线程)的概念是,在一个进程中存在多个线程,多个线程共享该进程的地址空间,相当于一个车间内有多条流水线,都共用一个车间的资源. 所以,进程只是用来把资 ...

  10. sql得到表中的列信息

    取列全部用的 sys. 中的表 CTE:WITH name AS() 用法:   sql树形查询 ①主键信息 SELECT ic.column_id, ic.index_column_id, ic.o ...