npoi 是 poi 項目的 .net 版本。poi是一個開源的java讀寫excel、word等微軟ole2元件文檔的項目。npoi讓.net平台擁有了一個比較完善的讀寫excel的工具。使用量非常廣泛,應該是開源的.net excel讀寫工具中曝光度最高的一個吧,沒有之一。
使用npoi的優勢有:完全免費使用,包含了大部分excel的特性(單元格樣式、資料格式、公式等等),支援處理的檔案格式包括xls, xlsx, docx.采用面向接口的設計架構( 可以檢視 npoi.ss 的命名空間),同時支援檔案的導入和導出,你不需要在伺服器上安裝微軟的office,可以避免版權問題。使用起來比office pia的api更加友善,更人性化。那麼還等什麼呢?下面就是我第一次使用npoi做的一個日報表工具,裡面的單元格合并都是在程式中動态完成的,過程很艱辛,但結果很美好,目前已經使用了2年,穩定無bug,非常給力啊。

npoi.css是一個可以在使用npoi時用類css的方法設定單元格樣式的npoi擴充,隻支援.net4及以上版本的項目。這個擴充是為了友善在使用的時候設定單元格及其相關格式樣式,可以使用類似css的方式,非常給力。看看下面的代碼:
yjinglee.office用于.net平台下的excel操作,主要封裝npoi對外提供更簡單實用的api,提供以下功能點:
1.讀取excel資料轉換成對象集合
2.寫入集合到excel,并提供可以excel樣式定義
看看一段讀取excel的代碼:
excelreport是一款基于npoi開發的報表引擎元件。它基于關注點分離的理念,将資料與樣式、格式分離。讓模闆承載樣式、格式等npoi不怎麼擅長且實作繁瑣的資訊,結合npoi對資料的處理的優點将excel報表的生成化繁為簡。同時,對報表組成的基本元素進行了抽象,進一步簡化了excel報表的生成過程。
epplus是一個使用open office xml(xlsx)檔案格式,讀寫excel 2007/2010檔案的開源元件。和npoi相比,它更早的支援了xlsx格式,而npoi支援excel 2003更好,現在新版本的npoi也開始支援xlsx了。是以他們兩個還是有一點差別的。epplus我沒用過,但很早就聽說了,也是使用非常官方的一個,目前也一直在更新。看大家的使用需求了。可以嘗試一下。支援的範圍也很廣,例如:單元格合并,單元格樣式,圖表(這個npoi目前還不是很好),表格,資料驗證,公式,vba等等。
linqtoexcel是一個.net平台下開源項目,它主要實作了linq的文法查詢excel電子表格。類型之前的linqtoxxx如果你是linq文法糖愛好者那最适合你。例如,下面代碼,查詢電子表格的頭:
netoffice元件比較特别,是一個操作office的強大元件,包括處理office, excel, word, outlook, powerpoint, access, project, visio等,是以支援非常全面。但是這個元件并不是完全單獨寫的,而是調用microsoft office的互操作程式集以及vsto,也就是進行了一個深度的封裝,進而讓你不需要安裝這些東西,隻需要拷貝相應的程式集就可以了。目前一共包括16個操作的程式集。根據你的需要可以選擇相應的程式集。它有幾個優點:
1.沒有office的版本限制;
2.支援office2000,2003,2007,2010,2013版本,就是支援全部office的版本,足夠強大;
3.支援版本之間的獨立開發
4.操作文法和microsoft的互操作程式集的文法是一樣的;是以更加易于學習和使用;
5.如果你熟悉office對象模型,你可以使用你現有的pia代碼,不需要重新學習;
6.優化了一些com操作的代碼
7.可以在.net2.0及以上環境使用;
8.部署友善,不需要注冊,沒有依賴的程式集
其他的功能看官方檔案介紹,如果有空,大家對這個需求強烈,可以寫文章專門介紹。
docx是一個以非常直覺簡單的方式操作word 2007/2010檔案的輕量級.net元件。它的速度非常快,而且不需要安裝微軟的office軟體。在中國,免費并且小巧的wps有足夠的理由讓很多使用者放棄龐大的office,那在實際軟體開發過程中,這玩意就有用處了。遺憾是不支援2003,但總歸是被淘汰的趨勢,而且用wps,也沒有啥版本的差別。目前支援在檔案中插入、删除和替代文本,支援所有的文本格式,如字型,下劃線,高亮等;支援插入圖檔、超連結、表格、頁眉頁腳以及自定義屬性等;支援類似jquery的鍊式寫法,很友善程式設計開發。
生成pdf檔案格式的文檔,大家肯定有想過,很多人項目中也肯定用過,方法、元件肯定有很多。但是.net平台開源免費的不多,最好用的應該是itextpdf,不過人家是非商業免費,是以我們就排除在外吧。看看免費的,這個pdfsharp是目前比較完善,而且還在持續更新的。支援功能有:
可以使用.net程式設計語言動态建立pdf文檔,
很容易使用對象模型來建構文檔,
全部用c#重寫設計和編寫代碼,
可以生成pdf檔案和顯示在窗體或者列印,
使用同一源檔案,可以修改、合并或者分割pdf檔案,
可以控制圖檔的透明度,嵌入了字型等等。支援總體算全面吧,不過沒有親自測試過。
migradoc是一個.net平台開源的文檔生成器,幾乎支援所有的文字處理功能。你隻需要添加段落,表格,或者圖表到節中,使用書簽來建立連結,表格内容,索引等等。migradoc會自動進行分頁和布局,可以生成pdf,xps以及rtf文檔格式。總的來說,是一個更簡單類型的通用文檔生成工具。它的官方網站和pdfsharp是一起的,目前也是在更新中。
pdfreport 是一個支援code-first的報表引擎,建立在開源項目itextsharp和 epplus基礎上。支援.net 3.5以上,看看項目的一個圖檔:
diffplex是一個開源的c#文本差異比較軟體。支援.net 4.0, silverlight 5.0, windows 8.0, windows phone 8.0, windows phone appx 8.1等環境。如下圖所示:
reportgenerator可以将opencover, partcover, visual studio 或者ncover生成的xml報表轉換為可讀性更加好的格式。上面這幾個工具都是代碼覆寫率分析工具。轉換後的報表有以下格式:
1.html, htmlsummary
2.xml, xmlsummary
3.latex, latexsummary
4.textsummary
5.custom reports
該元件目前一直在持續進行更新,對于專門做測試方面的人應該有些幫助,曾經也看到過文章使用這個元件來展示分析後的報表,不過不太懂,不去深究。
busyreports是一個非常友善的從ssrs web 服務生成報表的應用程式。busyreports提供了一個gui界面,可以友善配置報表參數,電子郵件,檔案路徑等。這些配置資訊存儲在4個易于編輯的表格中。該元件與sql server資料驅動訂閱類似,但删除了其中一些限制。該元件目前一直在更新。看下面的 gui 配置界面:
seal report應該是上面這幾個之中最好用,最常用的一個。它提供了一個完整的從其他任何資料庫産生報表的架構。該産品主要關注于容易安裝和報表設計,一旦安裝好,報表很快就可以建立并且釋出。該元件完全開源,使用c#語言編寫。其主要特征有,1.動态sql資料源:可以使用sql或讓seal引擎建構動态sql用于查詢資料庫,2.本地資料透視表:直接在資料透視表簡單的拖放元素,并将它們顯示在報表中,還支援html5圖表等,詳細去官網看看,下面看2張報表設計和報表結果的截圖:
報表結果: