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: }
输出结果如下:
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://www.cnblogs.com/codefish/archive/2013/04/08/3009098.html
Linq To Excel使用简介二的更多相关文章
- {Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解)
Django基础七之Ajax 本节目录 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解) 一 Ajax简介 ...
- Windbg 脚本命令简介 二, Windbg command
Windbg 脚本命令简介 二, Windbg script command $<, $><, $$<, $$><, $$>a< (Run Scri ...
- {Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解)
{Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解) Django基础七之 ...
- LINQ学习之旅(二)
一:查询表达式(LINQ)简介 LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性.已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译 ...
- MVC NPOI Linq导出Excel通用类
之前写了一个模型导出Excel通用类,但是在实际应用中,可能不是直接导出模型,而是通过Linq查询后获取到最终结果再导出 通用类: public enum DataTypeEnum { Int = , ...
- 浅谈Excel开发:二 Excel 菜单系统
在开始Excel开发之前,需要把架子搭起来.最直接的那就是Excel里面的菜单了,他向用户直观的展现了我们的插件具有哪些功能.菜单出来之后我们就可以实现里面的事件和功能了.Excel菜单有两种形式,一 ...
- 【转】【收藏】LINQ学习心得分享--------(二)LINQ语法详解
原地址:http://blog.csdn.net/xuemoyao/article/details/8053444 通过上一章节的学习,相信大家已经掌握了学习LINQ的前期的准备知识.在这一节里, ...
- LinqToExcel: LINQ查询Excel电子表格
Linq的强大人所共知,能不能将Linq扩展到读取excel呢? 答案当然是肯定的. LinqToExcel就是一个实现了使用Linq语法查询excel表格的.net开源类库. 在nuget搜索下载安 ...
- WPF Binding值转换器ValueConverter使用简介(二)-IMultiValueConverter
注: 需要继承IMultiValueConverter接口,接口使用和IValueConverter逻辑相同. 一.MultiBinding+Converter 多值绑定及多值转换实例 当纵向流量大于 ...
随机推荐
- typescript 添加基础类型的扩展方法
以时间转换为案例: //声明接口,也是在声明date这个基础类型要定义一个format的扩展方法,不写接口声明会报错 interface Date { Format(fmt:string):strin ...
- 【[SDOI2009]晨跑】
板子 题意就是每个点只能经过一次 所以非常显然拆点,除去\(1,n\)每个点\(i\)向\(i'\)连一条容量为\(1\)费用为\(0\)的边 剩下的边按照输入给出的建就好了 代码 #include& ...
- table自适应
当table大于屏幕时,table可以左右滑动 //给table的父元素设置样式 .edit_table{ width:100%; overflow: auto; }
- PAT (Basic Level) Practise (中文)-1040. 有几个PAT(25)
1040. 有几个PAT(25) http://www.patest.cn/contests/pat-b-practise/1040 字符串APPAPT中包含了两个单词“PAT”,其中第一个P ...
- Mac使用GNU版本的sed
今天在mac下用sed试图替换\t ,结果发现不生效,Google之后发现mac作为unix分支的系统上的sed与GNU版本的sed行为不太一致. 使用以下命令安装GNU命令套件: brew inst ...
- Swift_字典详解
Swift_字典详解 点击查看源码 初始化 fileprivate func testInit() { //空字典 var dic = [String:String]() print(dic) dic ...
- 配置隐私协议 - iOS
根据苹果隐私协议新规的推出,要求所有应用包含隐私保护协议,故为此在 App 中添加了如下隐私协议模块. 首次安装 App 的情况下默认调用隐私协议模块展示相关信息一次,当用户点击同意按钮后,从此不再执 ...
- Java的内存--存储(1)
有次去面试,面试官突然问我这个问题,当时我只知道怎么写最优化,但是具体不知道为什么那样写,身价立马下降哦 1. 以下开发习惯,你怎么看? for(int i=0;i<2;i++){ Person ...
- ABAP术语-Business Connector
Business Connector 原文:http://www.cnblogs.com/qiangsheng/archive/2007/12/27/1016379.html XML-based st ...
- 小程序swiper不显示图片
按照文档上的代码运行后,发现图片不显示 解决办法: app.wxss文件 align-items: center;这句话删除了,运行 OK!