标签:LinqToExcel 简洁 string 开源 google var tsheet public
转载: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,简洁,string,开源,google,var,tsheet,public 来源: https://www.cnblogs.com/y114113/p/10813861.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。