在前2篇文章這些.NET開源項目你知道嗎?讓.NET開源來得更加猛烈些吧 和這些.NET開源項目你知道嗎?讓.NET開源來得更加猛烈些吧!(第二輯)中,大伙熱情高漲。再次拿出自己的私貨,在.NET平台處理文檔相關的開源組件。文檔處理在開發中是一個非常常見的任務了,例如導出Excel,導出Word,生成PDF報表等等。那今天就看看下面這些.NET開源項目你知道不?如果有用,千萬不要忘記推薦哦。同時個人能力有限,希望大家補充。
.NET開源目錄:【目錄】本博客其他.NET開源項目文章目錄
本文原文地址:這些.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,非常給力啊。
官方網站:http://npoi.codeplex.com/
https://github.com/tonyqus/npoi
官方教程:http://www.npoi.info/
NPOI.CSS是一個可以在使用NPOI時用類CSS的方法設置單元格樣式的NPOI擴展,只支持.NET4及以上版本的項目。這個擴展是為了方便在使用的時候設置單元格及其相關格式樣式,可以使用類似Css的方式,非常給力。看看下面的代碼:
1cell.CSS(
"color:red;font-weight:bold;font-size:11;font-name:宋體;border-type:thin;"
)
官方網站:https://github.com/qihangnet/npoi.css
yjinglee.office用於.Net平台下的Excel操作,主要封裝NPOI對外提供更簡單實用的API,提供以下功能點:
1.讀取Excel數據轉換成對象集合
2.寫入集合到Excel,並提供可以Excel樣式定義
看看一段讀取Excel的代碼:
1 2 3 4 5 6 7 8 9 10var
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"
));
//保存文件
ExcelReport是一款基於NPOI開發的報表引擎組件。它基於關注點分離的理念,將數據與樣式、格式分離。讓模板承載樣式、格式等NPOI不怎麼擅長且實現繁瑣的信息,結合NPOI對數據的處理的優點將Excel報表的生成化繁為簡。同時,對報表組成的基本元素進行了抽象,進一步簡化了Excel報表的生成過程。
官方網站:https://github.com/hanzhaoxin/ExcelReport
介紹文章:http://www.cnblogs.com/hanzhaoxin/p/4472860.html
Epplus是一個使用Open Office XML(Xlsx)文件格式,讀寫Excel 2007/2010文件的開源組件。和NPOI相比,它更早的支持了Xlsx格式,而NPOI支持Excel 2003更好,現在新版本的NPOI也開始支持Xlsx了。所以他們兩個還是有一點區別的。Epplus我沒用過,但很早就聽說了,也是使用非常官方的一個,目前也一直在更新。看大家的使用需求了。可以嘗試一下。支持的范圍也很廣,例如:單元格合並,單元格樣式,圖表(這個NPOI目前還不是很好),表格,數據驗證,公式,VBA等等。
官方網站:http://epplus.codeplex.com/
LinqToExcel是一個.NET平台下開源項目,它主要實現了LINQ的語法查詢Excel電子表格。類型之前的LINQToXXX如果你是LINQ語法糖愛好者那最適合你。例如,下面代碼,查詢電子表格的頭:
1 2 3 4var
excel =
new
ExcelQueryFactory(
"excelFileName"
);
var
indianaCompanies =
from
c
in
excel.Worksheet<Company>()
where
c.State ==
"IN"
select
c;
官方網站:https://github.com/paulyoder/
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/
DocX是一個以非常直觀簡單的方式操作Word 2007/2010文件的輕量級.NET組件。它的速度非常快,而且不需要安裝微軟的Office軟件。在中國,免費並且小巧的WPS有足夠的理由讓很多用戶放棄龐大的Office,那在實際軟件開發過程中,這玩意就有用處了。遺憾是不支持2003,但總歸是被淘汰的趨勢,而且用WPS,也沒有啥版本的區別。目前支持在文件中插入、刪除和替代文本,支持所有的文本格式,如字體,下劃線,高亮等;支持插入圖片、超鏈接、表格、頁眉頁腳以及自定義屬性等;支持類似JQuery的鏈式寫法,很方便編程開發。
相比Excel來說,開源的操作Doc文檔的組件比較少,這個組件只能勉強滿足一些基本功能吧。遇到一些高級的,坑還是很多。但總的來說,常規支持是第一步吧,該項目目前也在更新中,期待更加完善。我在2013年曾經寫過一篇介紹基本使用的文章:【原創】開源Word讀寫組件DocX介紹與入門
官方網站:http://docx.codeplex.com/
生成PDF文件格式的文檔,大家肯定有想過,很多人項目中也肯定用過,方法、組件肯定有很多。但是.NET平台開源免費的不多,最好用的應該是ItextPDF,不過人家是非商業免費,所以我們就排除在外吧。看看免費的,這個PDFSharp是目前比較完善,而且還在持續更新的。支持功能有:
可以使用.NET編程語言動態創建PDF文檔,
很容易使用對象模型來構建文檔,
全部用C#重寫設計和編寫代碼,
可以生成PDF文件和顯示在窗體或者打印,
使用同一源文件,可以修改、合並或者分割PDF文件,
可以控制圖片的透明度,嵌入了字體等等。支持總體算全面吧,不過沒有親自測試過。
官方網站:http://www.pdfsharp.net/
MigraDoc是一個.NET平台開源的文檔生成器,幾乎支持所有的文字處理功能。你只需要添加段落,表格,或者圖表到節中,使用書簽來創建鏈接,表格內容,索引等等。MigraDoc會自動進行分頁和布局,可以生成PDF,XPS以及RTF文檔格式。總的來說,是一個更簡單類型的通用文檔生成工具。它的官方網站和PDFsharp是一起的,目前也是在更新中。
官方網站:http://www.pdfsharp.net/
PdfReport 是一個支持code-first的報表引擎,建立在開源項目iTextSharp和 EPPlus基礎上。支持.net 3.5以上,看看項目的一個圖片:
官方網站:http://pdfreport.codeplex.com/
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
ReportGenerator可以將OpenCover, PartCover, Visual Studio 或者NCover生成的XML報表轉換為可讀性更加好的格式。上面這幾個工具都是代碼覆蓋率分析工具。轉換後的報表有以下格式:
1.HTML, HTMLSummary
2.XML, XMLSummary
3.Latex, LatexSummary
4.TextSummary
5.Custom reports
該組件目前一直在持續進行更新,對於專門做測試方面的人應該有些幫助,曾經也看到過文章使用這個組件來展示分析後的報表,不過不太懂,不去深究。
官方網站:https://github.com/danielpalme/ReportGenerator
BusyReports是一個非常方便的從SSRS Web 服務生成報表的應用程序。BusyReports提供了一個GUI界面,可以方便配置報表參數,電子郵件,文件路徑等。這些配置信息存儲在4個易於編輯的表格中。該組件與SQL Server數據驅動訂閱類似,但刪除了其中一些限制。該組件目前一直在更新。看下面的 GUI 配置界面:
官方網站:http://busyreports.codeplex.com/
Seal Report應該是上面這幾個之中最好用,最常用的一個。它提供了一個完整的從其他任何數據庫產生報表的架構。該產品主要關注於容易安裝和報表設計,一旦安裝好,報表很快就可以建立並且發布。該組件完全開源,使用C#語言編寫。其主要特征有,1.動態SQL數據源:可以使用SQL或讓Seal引擎構建動態SQL用於查詢數據庫,2.本地數據透視表:直接在數據透視表簡單的拖放元素,並將它們顯示在報表中,還支持HTML5圖表等,詳細去官網看看,下面看2張報表設計和報表結果的截圖:
報表結果:
官方網站:http://sealreport.codeplex.com/