开源组件ExcelReport 1.5.2 使用手册
ExcelReport是一款基于NPOI開發(fā)的報(bào)表引擎組件。它基于關(guān)注點(diǎn)分離的理念,將數(shù)據(jù)與樣式、格式分離。讓模板承載樣式、格式等NPOI不怎么擅長且實(shí)現(xiàn)繁瑣的信息,結(jié)合NPOI對數(shù)據(jù)的處理的優(yōu)點(diǎn)將Excel報(bào)表的生成化繁為簡。同時,對報(bào)表組成的基本元素進(jìn)行了抽象,進(jìn)一步簡化了Excel報(bào)表的生成過程。
官方站點(diǎn)
NuGet:https://www.nuget.org/packages/ExcelReport
GitHub:https://github.com/hanzhaoxin/ExcelReport
cnblogs:http://www.cnblogs.com/hanzhaoxin/tag/ExcelReport /
QQ Group:116476496??
團(tuán)隊(duì)介紹
Jensen
來自于中國深圳,是這個項(xiàng)目的發(fā)起人和開發(fā)人員,2014年11月開始了ExcelReport的開發(fā),負(fù)責(zé)ExcelReport的開發(fā)、測試和bug修復(fù)。
個人博客地址:http:// hanzhaoxin.cnblogs.com
許可證說明
ExcelReport采用的是MIT許可,這意味著它可以被用于任何商業(yè)或非商業(yè)項(xiàng)目,你不用擔(dān)心因?yàn)槭褂盟仨氶_放你自己的源代碼,且可借助ExcelReport的影響力推廣你的產(chǎn)品。
當(dāng)然作為一個開源許可證,肯定也是有一些義務(wù)。例如:在軟件和軟件的所有副本中都必須包含以上版權(quán)聲明和本許可聲明。
完整的MIT許可證請見:http://mit-license.org/
版本升級說明:
如果您項(xiàng)目中使用了ExcelReport,Bug修復(fù)和功能擴(kuò)充的升級版本請放心升級,這類升級不能影響您現(xiàn)有的項(xiàng)目。如果架構(gòu)修改版本信息發(fā)生了變化,請謹(jǐn)慎升級,這類升級有可能影響您現(xiàn)有的項(xiàng)目。
為什么要用ExcelReport?
回答這個問題前,我們先看看Tony Qu是怎么回答為什么要用NPOI的?
1)你不需要在服務(wù)器上安裝微軟的 Office,可以避免版權(quán)問題。
2)NPOI使用起來比 Office PIA 的 API 更加方便,更人性化。
3)你不用去花大力氣維護(hù) NPOI,NPOI Team 會不斷更新、改善 NPOI,絕對省成本。
4)很多事情是 html 和cvs法做不到的,比如說公式計(jì)算[Cell C1]=A1+B1*A2單元格
高級樣式(如文本旋轉(zhuǎn)、對齊、寬度)等,其中公式計(jì)算可以適當(dāng)減輕服務(wù)器端的計(jì)算壓力
回到我們的問題,為什么要用ExcelReport呢?
1) 復(fù)雜的事情簡單了,不可能的事情可行了。
2) 你不需要了解NPOI大量的API,你不需要用.NET語言寫蹩腳的Java的語法。
3) 套用Tony兄的描述,你不用去花大力氣維護(hù)ExcelReport,ExcelReport Team會不斷更新、改善ExcelReport,絕對省成本。
目錄
1報(bào)表元素與元素格式化器
2演示:使用ExcelReport生成報(bào)表
3格式化器示例
3.1局部格式化器
3.2單元格格式化器
3.3表格格式化器
3.4重復(fù)單元格式化器
4多Sheet報(bào)表生成
1報(bào)表元素與元素格式化器
在開始示例之前,我們用一章的篇幅介紹ExcelReport是如何將報(bào)表的內(nèi)容抽象為元素的?
又是如何為元素填充數(shù)據(jù)的?為了說明第一個問題,我們從一個現(xiàn)有的報(bào)表開始。
如下報(bào)表有兩個Sheet:Sheet1名為“工資表”Sheet2名為“工資條”,其截圖如下所示。
我們先把數(shù)據(jù)部用藍(lán)色框線標(biāo)出來。
名正才能言順,先說說ExcelReport中報(bào)表元素的概念:
元素:填充到報(bào)表模板中的數(shù)據(jù)源對象,我們稱之為元素。
局部元素:填充到報(bào)表模板中的數(shù)據(jù)源對象是一個單元格內(nèi)容的一部分,我們稱這樣的數(shù)據(jù)源對象為局部元素。
單元格元素:填充到報(bào)表模板中的數(shù)據(jù)源對象是一個單元格的內(nèi)容,我們稱這樣的數(shù)據(jù)源對象為單元格元素。
表格元素:填充到報(bào)表模板中的數(shù)據(jù)源是某對象的集合,該對象是一行中多個單元格的內(nèi)容集合,我們稱這樣的數(shù)據(jù)源集合為表格元素。
重復(fù)單元元素:填充到報(bào)表模板中的數(shù)據(jù)源是某對象的集合,該對象是多行中多個單元格的內(nèi)容集合,我們稱這樣的數(shù)據(jù)源集合為重復(fù)單元元素。
【表格元素與重復(fù)單元元素?cái)?shù)據(jù)源以集合出現(xiàn)。為復(fù)元素。】
【對應(yīng)的,局部元素和單元格元素稱之為單元素。】
有了定義,我們讓元素們各就各位。
那么,ExcelReport又是如何為元素填充數(shù)據(jù)的?
話說元素格式化器為此而生。
| 報(bào)表元素 | 元素格式化器 |
| 局部元素 | PartFormatter |
| 單元格元素 | CellFormatter |
| 表格元素 | TableFormatter |
| 重復(fù)單元元素 | RepeaterFormatter |
【元素格式化器的作用是格式化元素將其填充到報(bào)表模板。】
2演示:使用ExcelReport生成報(bào)表
目標(biāo)報(bào)表,生成上章分析的”工資表-工資條”報(bào)表。
第一步:設(shè)計(jì)模板
【模板中參數(shù)格式:$[ParameterName]】
第二步:由模板生成模板填充規(guī)則文件
1) 打開模板填充規(guī)則文件生成工具
2) 將設(shè)計(jì)好的模板拖入Excel模板文件選擇框
3) 點(diǎn)擊“生成模板規(guī)則文件(.XML)”按鈕,生成規(guī)則文件。
第三步:填充模板,生成報(bào)表【項(xiàng)目中要添加對ExcelReport及NPOI(2.0以上)的引用】
生成導(dǎo)出報(bào)表:
【注:演示示例“生成工資表-工資條報(bào)表”源碼見解決方案:ExcelReportExamples】
3格式化器示例
通過上一章的示例,我們了解了ExcelReport生成報(bào)表的步驟,也用到了各種格式化器。在本章,我們將對格式化器逐一展開講解,以更詳細(xì)的了解它們。
3.1局部格式化器
局部格式化器用于格式化填充一個單元格內(nèi)容的一部分。填充數(shù)據(jù)類型為string。
構(gòu)成函數(shù):
| 參數(shù) | 描述 |
| cellPoint | 參數(shù)所在單元格位置 |
| parameterName | 參數(shù)名 |
| value | 要格式化填充的值 |
示例:(局部格式化器示例)
第一步:設(shè)計(jì)模板
第二步:由模板生成模板填充規(guī)則文件
第三步:填充模板,生成報(bào)表
生成導(dǎo)出報(bào)表:
3.2單元格格式化器
單元格格式化器用于格式化填充一個單元格。填充數(shù)據(jù)類型為object,詳見下表:
| 填充數(shù)據(jù)類型 | Excel中對應(yīng)的數(shù)據(jù)類型 | 可視化設(shè)置項(xiàng) |
| String | String | ? |
| DateTime | DateTime | |
| Boolean | Boolean | ? |
| Int16 Int32 Int64 Byte Single Double UInt16 UInt32 UInt64 | Double | |
| Byte[] | Image | ? |
構(gòu)成函數(shù):
| 參數(shù) | 描述 |
| cellPoint | 參數(shù)所在單元格位置 |
| value | 要格式化填充的值 |
示例:(單元格格式化器示例)
第一步:設(shè)計(jì)模板
第二步:由模板生成模板填充規(guī)則文件(略,詳參見第2章“演示”)
第三步:填充模板,生成報(bào)表
生成導(dǎo)出報(bào)表:
3.3表格格式化器
表格格式化器用于格式化填充一個表格。填充數(shù)據(jù)類型為IEnumerable<TSource>。
構(gòu)造函數(shù):
| 參數(shù) | 描述 |
| templateRowIndex | 模板行行標(biāo) |
| dataSource | 要格式化填充的數(shù)據(jù) |
| columnInfos | 列信息集合 |
TableColumnInfo構(gòu)造函數(shù):
| 參數(shù) | 描述 |
| columnIndex | 列標(biāo) |
| dgSetValue | Func<TSource, object>類型的委托對象(返回值Object,可參照第二節(jié)填充數(shù)據(jù)類型與Excel中數(shù)據(jù)類型對應(yīng)表。) |
示例:(表格格式化器示例)
第一步:設(shè)計(jì)模板
第二步:由模板生成模板填充規(guī)則文件(略,詳參見第2章“演示”)
第三步:填充模板,生成報(bào)表
生成導(dǎo)出報(bào)表:
| 提問回復(fù):【關(guān)于TableFormatter有以下知識點(diǎn),多次被提問,這里做出統(tǒng)一回答。】 問題一:TableFormatter的數(shù)據(jù)源可以是DataTable嗎? 答:你可以這樣寫: 問題二:我的實(shí)體類中沒有實(shí)現(xiàn)外鏈,在實(shí)體對象中有一個ID屬性,我想導(dǎo)出的內(nèi)容是ID對應(yīng)的Name,這怎么辦? 答:和示例中的“性別”沒什么區(qū)別吧。好吧,貼行代碼: |
3.4重復(fù)單元格式化器
重復(fù)單元格式化器用于格式化填充一個重復(fù)單元元素。填充數(shù)據(jù)類型為IEnumerable<TSource>。
構(gòu)造函數(shù):
| 參數(shù) | 描述 |
| startTagCell | 重復(fù)單元(開始)標(biāo)識單元格 |
| endTagCell | 重復(fù)單元(結(jié)束)標(biāo)識單元格 |
| dataSource | 要格式化填充的數(shù)據(jù) |
| cellInfos | 重復(fù)單元包含的單元格信息集合 |
RepeaterCellInfo構(gòu)造函數(shù):
| 參數(shù) | 描述 |
| cellPoint | 單元格坐標(biāo) |
| dgSetValue | Func<TSource, object>類型的委托對象(返回值Object,可參照第二節(jié)填充數(shù)據(jù)類型與Excel中數(shù)據(jù)類型對應(yīng)表。) |
示例:(重復(fù)單元格式化器示例)
第一步:設(shè)計(jì)模板
根據(jù)需求,隱藏重復(fù)單元標(biāo)識行。
第二步:由模板生成模板填充規(guī)則文件(略,詳參見第2章“演示”)
第三步:填充模板,生成報(bào)表
生成導(dǎo)出報(bào)表:
4多Sheet報(bào)表生成
到目前為止,我們所有導(dǎo)出都直接使用的是:ExportHelper類中的靜態(tài)方法。其實(shí)在ExcelReport組件的設(shè)計(jì)中Export類便是終點(diǎn)了,ExportHelper類正如它的名字只是為了方便操作提供的助手類而已。
【哦,它還是部分類,你可以根據(jù)需求擴(kuò)展。】
回到本章的主題,我們要談的是多Sheet報(bào)表的生成。什么?這和前邊啰嗦的那些有什么關(guān)系?好吧,其實(shí)關(guān)系也不大,我只是想說關(guān)注報(bào)表的生成,你看Export類就對了。
| 參數(shù) | 描述 |
| templateFile | 模板文件路徑 |
| containers | Sheet格式化容器的數(shù)組【數(shù)組中的每個元素對應(yīng)一個Sheet】 |
示例:(多Sheet報(bào)表生成示例)
第一步:設(shè)計(jì)模板
第二步:由模板生成模板填充規(guī)則文件(略,詳參見第2章“演示”)
第三步:填充模板,生成報(bào)表
生成導(dǎo)出報(bào)表:
作者:韓兆新 出處:http://hanzhaoxin.cnblogs.com/ 本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。 分類:?[11]我的開源本文轉(zhuǎn)自韓兆新博客博客園博客,原文鏈接:http://www.cnblogs.com/hanzhaoxin/p/4472860.html,如需轉(zhuǎn)載請自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的开源组件ExcelReport 1.5.2 使用手册的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数值分析之数值稳定性篇
- 下一篇: 基于TCP协议的socket通信