zoukankan      html  css  js  c++  java
  • Linq To Excel使用简介二

    目录:

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

           输出结果如下:

    image

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

           运行结果如下:

    image

    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

  • 相关阅读:
    Visualizing Concurrency in Go · divan's blog
    Trac常用插件描述!
    分布式 OLTP 数据库
    【SDCC讲师专访】PingCAP联合创始人兼CEO刘奇:好的产品应开源,不闭门造车-CSDN.NET
    XiaoMi/themis: Themis provides cross-row/cross-table transaction on HBase based on google's percolator.
    TiDB首页、文档和下载
    TeamGantt vs JIRA 2016 Comparison | FinancesOnline
    HandlerInterceptor拦截实现对PathVariable变量的读取
    大叔来说说Markdown的使用
    springcloud~配置中心实例搭建
  • 原文地址:https://www.cnblogs.com/xiaoxiangfeizi/p/3458254.html
Copyright © 2011-2022 走看看