使用LinqToExcel和EPPlus操作excel
1、使用LinqToExcel
LinqToExcel是一个.net framework平台下开源项目,它主要实现了LINQ的语法查询Excel电子表格。类型之前的LINQToXXX如果你是LINQ语法糖爱好者那最适合您。
你在VS中可以从NuGet中搜索它,如下图: 
或从控制台使用以下命令:
PM> Install-Package LinqToExcel
在使用之前需要添加命名空间 using LinqToExcel;
//取得数据,只需要一行代码
var execelfile = new ExcelQueryFactory(excelfilename.xls);
如何取到相应的表呢?
//紧接楼上
var tsheet = excelfile.Worksheet();
此时得到是没有进行相应映射的(row)行列集合.
一个简单的查询:
var excelfile = new ExcelQueryFactory("1.xls");
var tsheet = excelfile.Worksheet();<br> //查询30岁以上的人的名字
var query = from p in tsheet
where p["Age"].Cast<int>() >
select p;
foreach (var item in query)
{
Console.WriteLine("Name is {0}",item[].Value.ToString());
}
Console.Read();
查询结果:

那如何转成相应的实体集合呢?
class Program
{
static void Main(string[] args)
{
var excelfile = new ExcelQueryFactory("1.xls");
//用另一种方法取得实体数据集
var tsheet = excelfile.Worksheet<Person>();
var query = from p in tsheet
where p.Age >
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文件更不在话下了。
2、使用EPPlus
提到通过纯.Net读写Excel,一般首先想到的自然是大名鼎鼎的NPOI,就连微软官方的MSDN都有专门的一篇文章来介绍它的用法。今天在一个项目中使用到了导出报表为Excel的功能,便特地的试用了一下,感觉虽然它的功能够强大,但谈不上好用。可能是由于其起源与Java的POI的缘故,大部分的API还透浓浓着Java的味道。 例如,要在一个单元格中写入数据时,必须先CreateRow(),再CreateCell()才能写入,不能使用类似Cells[rowIndex, colIndex]=value之类的语句一步到位。
于是,便在网上继续搜了一下,在文章《讀取 Excel 你還在用 NPOI 嗎?快來試試 LinqToExcel》中找到了另一个库:LinqToExcel。这个库可以通过一个LINQ查询快速而友好的读取Excel。不过,它貌似仅限于简单的映射关系,并且不能写入,大部分情况下不能满足复杂一点的业务需求。
最后,我找到了一个非常强大的库——EPPlus,感觉上基本上该有的功能都有了,并且有比较友好的API。如下是一个简单的例子:
using (var p = new ExcelPackage())
{
var sheet = p.Workbook.Worksheets.Add("My Sheet"); //Cells的起始索引是1
sheet.Cells[, ].Value = ;
sheet.Cells[, ].Value = ;
sheet.Cells[, ].Value = ;
sheet.Cells[, ].Value = ; p.SaveAs(new FileInfo(@"r:\output.xlsx"));
}
感觉上比NPOI友好多了。 效果如下:

这个例子比较简单,更复杂一点的例子可以参考这个文章:http://zeeshanumardotnet.blogspot.com/2010/08/creating-advanced-excel-2007-reports-on.html(需要FQ)。或者它的官方帮助文档:http://epplus.codeplex.com/wikipage?title=FAQ&referringTitle=Documentation
最后,提一下这个库的一点不足——它只支持XLSX格式,不支持Office2003的Excel格式,不过到现在这个也不是什么问题了。
使用LinqToExcel和EPPlus操作excel的更多相关文章
- 使用EPPLUS操作EXcel
使用EPPLUS操作EXcel 时间 2014-11-06 19:28:01 姜糖水 原文 http://www.cnphp6.com/archives/58648 主题 Excel 1 下载Ep ...
- C#使用第三方组件Epplus操作Excel表
Epplus操作Excel基础详解 1.什么是Epplus Epplus是一个使用Open Office XML文件格式,能读写Excel2007/2010文件的开源组件,在导出Excel的时候不需要 ...
- ASP.NET Core使用EPPlus操作Excel
1.前言 本篇文章通过ASP.NET Core的EPPlus包去操作Excel(导入导出),其使用原理与NPOI类似,导出Excel的时候不需要电脑上安装office,非常好用 2.使用 新建一个AS ...
- c#用EPPLUS操作excel
参考: http://www.cnblogs.com/rumeng/p/3785748.html http://www.cnblogs.com/libla/p/5824296.html#3818995 ...
- [Solution] NPOI操作Excel
NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 ...
- .net 操作excel
.net 操作excel的常用组件:EPPlus,NPOI 1.NPOI,即POI的.NET版本(POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office文件, ...
- 【代码沉淀】 - EPPlus - 操作xlsx表格文件
EPPlus - Create advanced Excel spreadsheets on the server.web: http://epplus.codeplex.com/nuget: Ins ...
- C# 操作 Excel(.xls和.xlsx)文件
C#创建Excel(.xls和.xlsx)文件的三种方法 .NET 使用NPOI导入导出标准Excel C# 使用NPOI 实现Excel的简单导入导出 NET使用NPOI组件将数据导出Excel-通 ...
- [Asp.net] C# 操作Excel的几种方式 优缺点比较
在项目中我们常常需要将数据库中的数据导出成Excel文件 有一次工作中我的目的就是读取Excel到内存中,整理成指定格式 整理后再导出到Excel. 因为我要处理的每个Excel表格文件很大.一个表格 ...
随机推荐
- python:进程操作
一.多进程应用 import socket from multiprocessing import Process def talk(conn): conn.send(b'connected') re ...
- SPOJ MUSKET - Musketeers
黑书P117页. 要是不看解析,确实不要算和定义状态. 把环看成链,是指把这个1234512345,写两边,然后怎么表示一个人是否胜利了呢?其实就是其他人全部死光(好像等于没说): 考虑最后一次杀人, ...
- PHP设计模式——装饰器模式
<?php /** * 装饰器模式 * 如果已有对象的部分内容或功能发生变化,但是不需要修改原始对象的结构,应使用装饰器模式 * * 为了在不修改对象结构的前提下对现有对象的内容或功能稍加修改, ...
- 2018.11.30 zsh: command not found: mysql 的解决办法mac环境下
系统环境变量的问题.解决办法: 1.打开终端.输入open .zshrc 会出现一个可编辑文档, 2.找到# User configuration部分,在下一行添加source ~/.bash_pro ...
- div可编辑框,去除粘贴文字样式😄
上个月做了个聊天的需求(网页版的).说到聊天都想到输入框,说到输入框都会想到input,但是input标签是不支持插入图片的(包括areatext标签).查阅了一些资料就看到div标签有一个属性con ...
- 三、详述 IntelliJ IDEA 的使用界面
是否还记得在博文“IntelliJ IDEA 安装目录的核心文件讲解”中,这张充满神秘色彩的图片呢?进入她,让咱们一起感受她的魅力吧! 如上图所示,打开 IntelliJ IDEA 后,首先迎接咱们的 ...
- oracle 基础知识(四)常用函数
SQL中的单记录函数 .ASCII 返回与指定的字符对应的十进制数; SQL') zero,ascii(' ') space from dual; A A ZERO SPACE --------- - ...
- 【题解】洛谷P2426删数
链接 https://www.luogu.org/problemnew/show/P2426 念念碎 第一次接触到区间DP(瑟瑟发抖) 所以象征性地看了一下题解 这好像是一道比较基础的区间DP吧 但是 ...
- Ueditor插入script标签
对于这个问题.我想有的人会遇到有的人不会遇到,后面说为什么. 有的人会百度解决问题.百度官方文档这样回答 然而你去editor_config.js搜索根本找不到这个配置.(百度你该更新了.....) ...
- IOS NSNotification 通知
一. 先看下官方对NSNotification通知的解释 1. NSNotification 通知 @interface NSNotification : NSObject <NSCopying ...