LinqToExcel 简洁与优美开源库
转载:https://www.cnblogs.com/codefish/archive/2013/04/08/3009098.html
正在做项目,同事问道有啥简单的方法读取excel到DataTable里面呢?
想也不想直接回到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)行列集合.
一个简单的查询:
1
2
3
4
5
6
7
8
9
10
|
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(); |
查询结果:
那如何转成相应的实体集合呢?
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=
LinqToExcel 简洁与优美开源库的更多相关文章
- ios很好的开源库
Tim9Liu9/TimLiu-iOS 自己总结的iOS.mac开源项目及库,持续更新.. 目录 UI 下拉刷新 模糊效果 AutoLayout 富文本 图表 表相关与Tabbar 隐藏与显示 HUD ...
- 快快快!27个提升效率的iOS开源库推荐
文章来源:http://www.csdn.net/article/2015-07-21/2825264-27-ios-open-source-libraries/1 我热爱开源,更喜爱那些花费宝贵的业 ...
- 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发
[原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文 http: ...
- 100个Github上Android开源库
项目名称 项目简介 1. react-native 这个是 Facebook 在 React.js Conf 2015 大会上推出的基于 JavaScript 的开源框架 React Native, ...
- 各种有用的PHP开源库精心收集
转自:http://my.oschina.net/caroltc/blog/324024 摘要 各种有用的PHP开源库精心收集,包含图片处理,pdf生成,网络协议,网络请求,全文索引,高性能搜索,爬虫 ...
- Android 第三方开源库收集整理(转)
原文地址:http://blog.csdn.net/caoyouxing/article/details/42418591 Android开源库 自己一直很喜欢Android开发,就如博客签名一样, ...
- GitHub上排名前100的Android开源库介绍(来自github)
本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍,至于排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果,然后过滤了 ...
- GitHub Top 100的Android开源库
摘要: 本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据GitHub搜索Java语言选择「Best M... 本项目主要对目前 GitH ...
- CocoaPods的安装及使用/利用开源库Diplomat实现分享及第三方登录/git的使用
<<史上最简洁版本>> 1.gem sources -l查看 当前的源 //1.1 sudo -i..以下都是以管理员的身份来操作的 2.gem sources --remov ...
随机推荐
- iOS开发CATransform3D.h属性详解和方法使用
1.CATransform3D简介 layer有个属性transform,是CATransform3D类型.可以使其在三维界面作平移.缩放和旋转单独或组合动画! CATransform3D结构体: / ...
- Docker系列(十一):Kubernetes集群集群部署实践
Kubernetes分布式集群架构 服务注册和服务发现问题怎么解决的? 分布式通讯的核心就是ip加端口 每个服务分配一个不变的虚拟IP+端口 系统env环境变量里有每个服务的服务名称到IP的映射 如下 ...
- 基于vue-cli的vs code设置
vue-cli自带eslin校验,vs code采用下可以设置在保存文件时会自动纠正格式 { // vscode默认启用了根据文件类型自动设置tabsize的选项 "editor.detec ...
- 《DSP using MATLAB》Problem 8.1
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- 第一周课堂笔记2th
上课笔记2th https://mubu.com/doc/2gxvIvVLG0(老师笔记网址) 1. python python运行过程 把源代码转化成字节码(机器不能识别) 也可能不产生py ...
- Shield 安装与配置
Shield 安装与配置 https://www.elastic.co/guide/en/shield/shield-1.3/introduction.html 一.简介 Shield是Elas ...
- C/C++ 信号量 CreateSemaphore 用法
HANDLE CreateSemaphore( LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, // SD LONG lInitialCount, // in ...
- 2、node服务器
一.简单的node服务器搭建 1.首先新建一个名为server.js的文件(文件名随意,后缀名必须是.js) 2.粘贴进文件以下内容 //引入http模块 const http = require(& ...
- 用 vue 脚手架 vue-cli 初始化(新建)项目
前提:已经安装 node.js 和 git 1.在需要创建的文件夹中,右击 -> Git Bush Here ,然后输入命令 vue init webpack "文件名"( ...
- 如何使用JMeter 进行压力测试
文件转载至:https://jingyan.baidu.com/album/a681b0de5b85db3b184346b9.html?picindex=2 1.打开JMeter, 更改语言为中文,官 ...