1. 程式人生 > >比NPOI更好用的Excel操作庫——EPPlus

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

滿足 幫助文檔 add 復雜 works 一點 不能 creat ima

提到通過純.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[1, 1].Value = 0;
sheet.Cells[2, 1].Value = 1;
sheet.Cells[3, 1].Value = 2;
sheet.Cells[4, 1].Value = 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