1. 程式人生 > >這些.NET開源專案你知道嗎?.NET平臺開源文件與報表處理元件集合(三)

這些.NET開源專案你知道嗎?.NET平臺開源文件與報表處理元件集合(三)

    在前2篇文章這些.NET開源專案你知道嗎?讓.NET開源來得更加猛烈些吧 和這些.NET開源專案你知道嗎?讓.NET開源來得更加猛烈些吧!(第二輯)中,大夥熱情高漲。再次拿出自己的私貨,在.NET平臺處理文件相關的開源元件。文件處理在開發中是一個非常常見的任務了,例如匯出Excel,匯出Word,生成PDF報表等等。那今天就看看下面這些.NET開源專案你知道不?如果有用,千萬不要忘記推薦哦。同時個人能力有限,希望大家補充。

1.Excel神器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,非常給力啊。

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;")

3.yjinglee.office

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

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

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

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

4.ExcelReport報表引擎

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

5.Epplus

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

6.LinqToExcel

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

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

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

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

8.Word文件讀寫工具Docx

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

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

9.PDF處理元件PDFsharp

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

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

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

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

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

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

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

10.MigraDoc文件生成器

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

11.PdfReport報表工具

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

12.檔案差異比較diffplex

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

13.ReportGenerator

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

1.HTML, HTMLSummary

2.XML, XMLSummary

3.Latex, LatexSummary

4.TextSummary

5.Custom reports

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

14.BusyReports 

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

15.Seal Report

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

報表結果:

相關推薦

這些.NET開源專案知道?.NET平臺開源報表處理元件集合()

    在前2篇文章這些.NET開源專案你知道嗎?讓.NET開源來得更加猛烈些吧 和這些.NET開源專案你知道嗎?讓.NET開源來得更加猛烈些吧!(第二輯)中,大夥熱情高漲。再次拿出自己的私貨,在.NET平臺處理文件相關的開源元件。文件處理在開發中是一個非常常見的任務了,例如匯出Excel,匯出Word,

這些.NET開源專案知道?讓.NET開源來得更加猛烈些吧!(第二輯)

    在上個月發表的一篇文章:這些.NET開源專案你知道嗎?讓.NET開源來得更加猛烈些吧 ,得到了很多朋友的響應。同時也有很多朋友直接進行使用,反應非常棒,雖然不是每一個都用得上,只要有一個用得上,其實也不錯了,其他的就留著收藏,以後說不定用得上。最近再次整理一些比較實用的.NET開源元件,如果大家有

這些.NET開源專案知道?讓.NET開源來得更加猛烈些吧

注意:有網友提出部分專案停止更新的事情,這個問題我特意注意過,很多都是小功能元件,功能穩定,沒有bug,沒更新是正常的。夠用就行了。其次技術支援的事情,對開源免費來說,不能太強求,這裡釋出的都是小功能元件,一般看原始碼也比較好理解,各取所需。當然有最好。。   長期關注和使用.NET開源專案,給我帶來了很多

Docker技術這些應用場景,知道

docker docker應用場景 場景一:節省項目環境部署時間1.單項目打包每次部署項目到測試、生產等環境,都要部署一大堆依賴的軟件、工具,而且部署期間出現問題幾率很大,不經意就花費了很長時間。Docker主要理念就是環境打包部署,可在任意Docker Engine運行。前期我們只需要將每個項目環境

5大移動/前端開源專案知道幾個?

5大移動/前端開源專案Freeline、ARouter、BeeHive和Weex、antd,你都知道嗎? BeeHive:一種大型iOS專案解耦框架,BeeHive框架意義在於將高複雜度的應

Java這些冷知識知道

除了 數據 多核 語言 cli 字母 不知道 scrip 導致 1)jvm有很多種,其實jvm是一個標準,sun做的那個叫hotspot,作者就是後來v8的作者lars bak,其他公司也做過jvm,其中做得比較好的有bea的jrockit,其他的包括ibm的r9,appl

Python通向百萬程序員的秘籍!這些技巧知道?99%的不知道

concat code 等價 基本 count except args bug 描述符 Python神奇方法是指一些允許在自定義類中增加“神奇”功能的方法。而在Python官方文檔中,有關這些方法的介紹或描述不僅內容分散,而且組織結構也相對松散。本文便對Python

場外交易系統的這些優缺點知道

一些業內人士認為,OTC是必不可少的市場,世界上第一個全棧式加密貨幣生態系統公司Bcause創始人認為:“如果某些幣種具有流動性,那麼它完全可以通過場外交易流通。” 儘管OTC具有隱祕、快捷、出入金方便等優點 1、“點對點”更靈活、點對點交易系統開發 進行大額交易的人大多選擇OT

雲端計算的這些優勢知道

雖然虛擬化技術能夠通過對伺服器負載、桌面,以及應用程式進行虛擬化,幫助企業解決這些問題,但某些挑戰依然存在。例如,隨意對伺服器負載進行虛擬化會導致虛擬機器的漫延,在解決一個問題的同時造成另一個問題。 雲端計算通過為業務提供改善敏捷度同時降低成本的新方法,有助於解決這些問題。例如,通過為 I

知道?未來我國大資料應用技術的發展將涉及這些熱點領域 大資料

在貴州省貴陽市舉行的2018中國國際大資料產業博覽會上,參觀者在參觀城市網路安全運營中心。新華社記者 陶亮 攝 近日釋出的《中國大資料應用發展報告》顯示—— 目前,我國網際網路、移動網際網路使用者規模均居全球第一,有著豐富的資料資源和顯著的應用市場優勢。隨著打

這些行業知識知道

  可能我們每天都在使用瀏覽器搜尋各種未知的問題,那你知道瀏覽器的發展史嗎?你可知道微軟,Google和雅虎競爭搜尋市場的歷史?有可能你會說,我又不care,it’s not of my bussiness!? OK,沒問題,那我們繼續往下看。   那首先我們得

#程式設計師,這些IDE的優缺點都知道?總有適合

1:eclipse   這是應用比較廣泛的一款針對於Java的IDE,其本身是一個框架平臺,但是支援很多的外掛,如C++和Python的,它可以及時檢查以及糾正你程式碼中的錯誤,並且你只需點下滑鼠就可以完成編譯執行,非常適合新手上手,而且是完全免費的。但是因為其啟動速度較慢,

用Java這麼多年,這些祕密知道

對於這些祕密中的每一個,重要的是要注意它們中的一些,例如數字下劃線和快取自動裝箱在應用程式中可能是有用的,但是其他的(如單個Java檔案中的多個類)已被降級到backburner一個原因。因此,僅僅因為語言中存在的功能並不 意味著它應該被使用(即使它不被棄用)。相反,判斷應該用於何時應用這些隱藏功能。在研究好

知道?張小龍的四小時演講沒有用過這些

昨晚(1月9日)微信之父張小龍的拖堂四小時演講,讓不少網友認真“研讀”。而網友@崔翔宇_採銅則發現了一個奇怪的現象,有很多大家都在說的詞,耳朵裡聽出老繭的詞,張小龍一個字都沒提。正是因為張小龍沒有提,我們看到了更多值得思考的東西。網友@崔翔宇_採銅把張小龍的講稿(張小龍4小時“拖堂”演講,全面總結微

.NET平臺開源專案速覽(4).NET生成工具ADB及使用

    很久以前就使用ADB這個工具來生成專案的幫助文件。功能強大,在學習一些開源專案的過程中,官方沒有提供CHM幫助文件,所以為了快速的瞭解專案結構和註釋。就生成文件來自己看,非常好用。這也是一個學習方法吧。例如本文在:   上述2篇文章中最後的資源中就手動製作了CHM幫助文件。有時候我們還可

.NET平臺開源專案速覽(18)C#平臺JSON實體類生成器JSON C# Class Generator

    去年,我在一篇文章用原始方法解析複雜字串,json一定要用JsonMapper麼?中介紹了簡單的JSON解析的問題,那種方法在當時的環境是非常方便的,因為不需要生成實體類,結構很容易解析。但隨著業務的變化,也會碰到超級變態的JSON,如果還按照以前的思路,會把人搞抽風掉,一旦結構變化,又要重來。所

如何讓iOS 保持介面流暢?這些技巧知道

作者:ibireme這篇文章會非常詳細的分析 iOS 介面構建中的各種效能問題以及對應的解決思路,同時給出一個開源的微博列表實現,通過實際的程式碼展示如何構建流暢的互動。 Index 1.演示專案 2.螢幕顯示影象的原理 3.卡頓產生的原因和解決方案 CPU 資源消耗原因和解決方案

HashMap這些問題知道

HashMap是Java面試中的常考點之一,而且其<Key,Value>結構也是開發中常常用到的結構之一。或許你使用過HashMap,但是你知道下面這些問題嗎? HashMap的底層結構是什麼? 如果你能說出是陣列+連結串列,那麼你知道1.8版本之後引入的紅黑樹嗎? 說道紅黑樹,你知道它的結

Android執行緒執行緒池的這些知道

在Android中,執行緒分為主執行緒和子執行緒,主介面用於與使用者互動,進行UI的相關操作,而子執行緒則負責耗時操作。如果在主執

Kafka 的這些原理知道

如果只是為了開發 Kafka 應用程式,或者只是在生產環境使用 Kafka,那麼瞭解 Kafka 的內部工作原理不是必須的。不過,瞭解 Kafka 的內部工作原理有助於理解 Kafka 的行為,也利用快速診斷問題。下面我們來探討一下這三個問題 Kafka 是如何進行復制的 Kafka 是如何處理來自生產者和