天天看點

這些.NET開源項目你知道嗎?.NET平台開源文檔與報表處理元件集合(三)

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

這些.NET開源項目你知道嗎?.NET平台開源文檔與報表處理元件集合(三)

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

1

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

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

1.讀取Excel資料轉換成對象集合

2.寫入集合到Excel,并提供可以Excel樣式定義

  看看一段讀取Excel的代碼:

2

3

4

5

6

7

8

9

10

<code>var</code> <code>Reports =</code><code>new</code> <code>Collection();</code>

<code>for</code> <code>(</code><code>var</code> <code>i = 0; i &lt; 10; i++)</code>

<code>{</code>

<code>    </code><code>Reports.Add(</code><code>new</code> <code>Report {Id = i*100, Name = Guid.NewGuid().ToString()});</code>

<code>}</code>

<code>var</code> <code>excel =</code><code>new</code> <code>Excel(</code><code>new</code> <code>DefaultStyle());</code><code>//建立Excel執行個體,可以傳遞不同的樣式執行個體</code>

<code>excel.CreateSheet(</code><code>"Test"</code><code>);</code><code>//建立一個Sheet,命名為Test</code>

<code>excel.WriteObject(Reports, 0, 0);</code><code>//在Sheet0中的第0行寫入集合</code>

<code>excel.SetColumnWidth(0, 0,</code><code>new</code> <code>[] {5, 35});</code><code>//在Sheet0的第0列開始依次設定列寬</code>

<code>excel.WriteFile(Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase,</code><code>"demo.xlsx"</code><code>));</code><code>//儲存檔案</code>

     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文法糖愛好者那最适合你。例如,下面代碼,查詢電子表格的頭:

<code>var</code> <code>excel = </code><code>new</code> <code>ExcelQueryFactory(</code><code>"excelFileName"</code><code>);</code>

<code>var</code> <code>indianaCompanies = </code><code>from</code> <code>c </code><code>in</code> <code>excel.Worksheet&lt;Company&gt;()</code>

<code>                       </code><code>where</code> <code>c.State == </code><code>"IN"</code>

<code>                       </code><code>select</code> <code>c;</code>

  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以上,看看項目的一個圖檔:

這些.NET開源項目你知道嗎?.NET平台開源文檔與報表處理元件集合(三)

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

這些.NET開源項目你知道嗎?.NET平台開源文檔與報表處理元件集合(三)

  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 配置界面:

這些.NET開源項目你知道嗎?.NET平台開源文檔與報表處理元件集合(三)

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

這些.NET開源項目你知道嗎?.NET平台開源文檔與報表處理元件集合(三)

報表結果:

這些.NET開源項目你知道嗎?.NET平台開源文檔與報表處理元件集合(三)

本文轉自葉小钗 h資料之巅部落格園部落格,原文連結:http://www.cnblogs.com/asxinyu/p/dotnet_opensource_project_3.html,如需轉載請自行聯系原作者