1. 程式人生 > 實用技巧 >NET開源文件及報表處理

NET開源文件及報表處理

轉自:https://blog.csdn.net/yangbolg/article/details/52170888 NET開源文件及報表處理

1.Excle神器NPOI

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,非常給力啊。

官方網站:http://npoi.codeplex.com/

https://github.com/tonyqus/npoi

官方教程:http://www.npoi.info/

2.NPOI擴充套件—NPOI.CSS

NPOI.CSS是一個可以在使用NPOI時用類CSS的方法設定單元格樣式的NPOI擴充套件,只支援.NET4及以上版本的專案。這個擴充套件是為了方便在使用的時候設定單元格及其相關格式樣式,可以使用類似Css的方式,非常給力。看看下面的程式碼:

cell.CSS("color:red;font-weight:bold;font-size:11;font-name:宋體;border-type:thin;")

官方網站:https://github.com/qihangnet/npoi.css

3.yjinglee.office

yjinglee.office用於.Net平臺下的Excel操作,主要封裝NPOI對外提供更簡單實用的API,提供以下功能點:

1.讀取Excel資料轉換成物件集合2.寫入集合到Excel,並提供可以Excel樣式定義

看看一段讀取Excel的程式碼:

  1. var Reports = new Collection();
  2. for (var i = 0; i < 10; i++)
  3. {
  4. Reports.Add(new Report {Id = i*100, Name = Guid.NewGuid().ToString()});
  5. }
  6. var excel = new Excel(new DefaultStyle());//建立Excel例項,可以傳遞不同的樣式例項
  7. excel.CreateSheet("Test");//建立一個Sheet,命名為Test
  8. excel.WriteObject(Reports, 0, 0);//在Sheet0中的第0行寫入集合
  9. excel.SetColumnWidth(0, 0, new [] {5, 35});//在Sheet0的第0列開始依次設定列寬
  10. excel.WriteFile(Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "demo.xlsx"));//儲存檔案

4.ExcelReport報表引擎

ExcelReport是一款基於NPOI開發的報表引擎元件。它基於關注點分離的理念,將資料與樣式、格式分離。讓模板承載樣式、格式等 NPOI不怎麼擅長且實現繁瑣的資訊,結合NPOI對資料的處理的優點將Excel報表的生成化繁為簡。同時,對報表組成的基本元素進行了抽象,進一步簡 化了Excel報表的生成過程。

官方網站:https://github.com/hanzhaoxin/ExcelReport

介紹文章:http://www.cnblogs.com/hanzhaoxin/p/4472860.html

5.Epplus

Epplus是一個使用Open Office XML(Xlsx)檔案格式,讀寫Excel 2007/2010檔案的開源元件。和NPOI相比,它更早的支援了Xlsx格式,而NPOI支援Excel 2003更好,現在新版本的NPOI也開始支援Xlsx了。所以他們兩個還是有一點區別的。Epplus我沒用過,但很早就聽說了,也是使用非常官方的一 個,目前也一直在更新。看大家的使用需求了。可以嘗試一下。支援的範圍也很廣,例如:單元格合併,單元格樣式,圖表(這個NPOI目前還不是很好),表 格,資料驗證,公式,VBA等等。

官方網站:http://epplus.codeplex.com/

6.LinqToExcel

LinqToExcel是一個.NET平臺下開源專案,它主要實現了LINQ的語法查詢Excel電子表格。型別之前的LINQToXXX如果你是LINQ語法糖愛好者那最適合你。例如,下面程式碼,查詢電子表格的頭:

  1. var excel = new ExcelQueryFactory("excelFileName");
  2. var indianaCompanies = from c in excel.Worksheet<Company>()
  3. where c.State == "IN"
  4. select c;

官方網站:https://github.com/paulyoder/

7.NetOffice元件

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.部署方便,不需要註冊,沒有依賴的程式集

其他的功能看官方檔案介紹,如果有空,大家對這個需求強烈,可以寫文章專門介紹。

官方網站:http://netoffice.codeplex.com/

8.Word文件讀寫工具Docx

DocX是一個以非常直觀簡單的方式操作Word 2007/2010檔案的輕量級.NET元件。它的速度非常快,而且不需要安裝微軟的Office軟體。在中國,免費並且小巧的WPS有足夠的理由讓很多 使用者放棄龐大的Office,那在實際軟體開發過程中,這玩意就有用處了。遺憾是不支援2003,但總歸是被淘汰的趨勢,而且用WPS,也沒有啥版本的區 別。目前支援在檔案中插入、刪除和替代文字,支援所有的文字格式,如字型,下劃線,高亮等;支援插入圖片、超連結、表格、頁首頁尾以及自定義屬性等;支援 類似JQuery的鏈式寫法,很方便程式設計開發。

相比Excel來說,開源的操作Doc文件的元件比較少,這個元件只能勉強滿足一些基本功能吧。遇到一些高階的,坑還是很多。但總的來說,常規支援是第一步吧,該專案目前也在更新中,期待更加完善。我在2013年曾經寫過一篇介紹基本使用的文章:【原創】開源Word讀寫元件DocX介紹與入門

官方網站:http://docx.codeplex.com/

9.PDF處理元件PDFsharp

生成PDF檔案格式的文件,大家肯定有想過,很多人專案中也肯定用過,方法、元件肯定有很多。但是.NET平臺開源免費的不多,最好用的應該是 ItextPDF,不過人家是非商業免費,所以我們就排除在外吧。看看免費的,這個PDFSharp是目前比較完善,而且還在持續更新的。支援功能有:

可以使用.NET程式語言動態建立PDF文件,

很容易使用物件模型來構建文件,

全部用C#重寫設計和編寫程式碼,

可以生成PDF檔案和顯示在窗體或者列印,

使用同一原始檔,可以修改、合併或者分割PDF檔案,

可以控制圖片的透明度,嵌入了字型等等。支援總體算全面吧,不過沒有親自測試過。

官方網站:http://www.pdfsharp.net/

10.MigraDoc文件生成器

MigraDoc是一個.NET平臺開源的文件生成器,幾乎支援所有的文書處理功能。你只需要新增段落,表格,或者圖表到節中,使用書籤來建立鏈 接,表格內容,索引等等。MigraDoc會自動進行分頁和佈局,可以生成PDF,XPS以及RTF文件格式。總的來說,是一個更簡單型別的通用文件生成 工具。它的官方網站和PDFsharp是一起的,目前也是在更新中。

官方網站:http://www.pdfsharp.net/

11.PdfReport報表工具

PdfReport 是一個支援code-first的報表引擎,建立在開源專案iTextSharp和 EPPlus基礎上。支援.net 3.5以上,看看專案的一個圖片:

官方網站:http://pdfreport.codeplex.com/

12.檔案差異比較diffplex

diffplex是一個開源的C#文字差異比較軟體。支援.NET 4.0, Silverlight 5.0, Windows 8.0, Windows Phone 8.0, Windows Phone Appx 8.1等環境。如下圖所示:

官方網站:https://github.com/mmanela/diffplex

13.ReportGenerator

ReportGenerator可以將OpenCover,PartCover,VisualStudio或者NCover生成的XML報表轉換為可讀性更加好的格式。上面這幾個工具都是程式碼覆蓋率分析工具。轉換後的報表有以下格式:

1.HTML,HTMLSummary

2.XML,XMLSummary

3.Latex,LatexSummary

4.TextSummary

5.Customreports

該元件目前一直在持續進行更新,對於專門做測試方面的人應該有些幫助,曾經也看到過文章使用這個元件來展示分析後的報表,不過不太懂,不去深究。

官方網站:https://github.com/danielpalme/ReportGenerator

14.BusyReports

BusyReports是一個非常方便的從SSRSWeb服務生成報表的應用程式。BusyReports提供了一個GUI介面,可以方便配 置報表引數,電子郵件,檔案路徑等。這些配置資訊儲存在4個易於編輯的表格中。該元件與SQLServer資料驅動訂閱類似,但刪除了其中一些限制。該 元件目前一直在更新。看下面的 GUI 配置介面:

官方網站:http://busyreports.codeplex.com/

15.SealReport

SealReport應該是上面這幾個之中最好用,最常用的一個。它提供了一個完整的從其他任何資料庫產生報表的架構。該產品主要關注於容易安 裝和報表設計,一旦安裝好,報表很快就可以建立並且釋出。該元件完全開源,使用C#語言編寫。其主要特徵有,1.動態SQL資料來源:可以使用SQL或讓 Seal引擎構建動態SQL用於查詢資料庫,2.本地資料透視表:直接在資料透視表簡單的拖放元素,並將它們顯示在報表中,還支援HTML5圖表等,詳細 去官網看看,下面看2張報表設計和報表結果的截圖:

報表結果:

官方網站:http://sealreport.codeplex.com/