首页 > 代码库 > 比NPOI更好用的Excel操作库——EPPlus

比NPOI更好用的Excel操作库——EPPlus

提到通过纯.Net读写Excel,一般首先想到的自然是大名鼎鼎的NPOI,就连微软官方的MSDN都有专门的一篇文章来介绍它的用法。今天在一个项目中使用到了导出报表为Excel的功能,便特地的试用了一下,感觉虽然它的功能够强大,但谈不上好用。可能是由于其起源与Java的POI的缘故,大部分的API还透浓浓着Java的味道。 例如,要在一个单元格中写入数据时,必须先CreateRow(),再CreateCell()才能写入,不能使用类似Cells[rowIndex, colIndex]=value之类的语句一步到位。

于是,便在网上继续搜了一下,在文章《讀取 Excel 你還在用 NPOI 嗎?快來試試 LinqToExcel》中找到了另一个库:LinqToExcel。这个库可以将Linq查询结果快速转换为Excel格式,感觉有点类似于我之前介绍过的一个库DoddleReport。不过,它也仅限于此,复杂一点的功能是做不出来的,大部分情况下不能满足业务需求。

最后,我找到了一个非常强大的库——EPPlus,感觉上基本上该有的功能都有了,并且有比较友好的API。如下是一个简单的例子:

????using (var p = new ExcelPackage())
????{
????????var sheet = p.Workbook.Worksheets.Add("My Sheet");

????????//Cells
的起始索引是1
????????sheet.Cells[1, 1].Value = http://www.mamicode.com/0;
????????sheet.Cells[2, 1].Value = http://www.mamicode.com/1;
????????sheet.Cells[3, 1].Value = http://www.mamicode.com/2;
????????sheet.Cells[4, 1].Value = http://www.mamicode.com/3;

????????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格式,不过到现在这个也不是什么问题了。

比NPOI更好用的Excel操作库——EPPlus