|
對于上篇中提到的報表我們以如下的事例,來說明如何做:報表事例圖: 模板圖:
來源數(shù)據(jù)圖:(即為上圖中Data2中的數(shù)據(jù))
生成報表圖:
現(xiàn)在相信大家己經(jīng)看出來了,我的報表是在Excel中完成的,我們的報表在項目中都是借助excel來實現(xiàn)的,將生成的報表傳到我們的MOSS上 Excel服務器上供用戶查看以用下載。借助于excel中的透視表來做,基本上能夠滿足各種需求。當然對于特別特別復雜的我們可以自己定義想要的模板。完成如上圖的報表我們要做的準備工作如下: 報表的數(shù)據(jù)來源: 根據(jù)我們報表的展示需求,我們先來確定下呈現(xiàn)報表所需要的數(shù)據(jù),寫好數(shù)據(jù)的返回格式,以便于寫存儲過程從項目中提取我們所需要的數(shù)據(jù)。如我們現(xiàn)在要生成如上圖的報表,通過分析發(fā)現(xiàn),我們需要如源數(shù)據(jù)圖中的這些數(shù)據(jù),到此數(shù)據(jù)的需求格式我們就定下來了。 報表的模板: 根據(jù)上面我們分析需要的數(shù)據(jù),我們來制作報表的模板。在此我特別說明一下,模板是透視表,是根據(jù)上圖中的Data2字段來生成的。對Excel透視表不清楚的,在此我一兩句也說不清,網(wǎng)上有很多教程,可以去先學習下。再來做模板,及數(shù)據(jù)返回需求的格式分析就會不感到吃力。 數(shù)據(jù)寫入到Excel: 怎么把數(shù)據(jù)寫到Excel的Data2中是我們這次報表生成的關(guān)鍵。要想把數(shù)據(jù)寫到Excel中我們要借助于一個微軟開源的程序: OpenXML。 下面我們來看一下OpenXML是什么,其實OpenXML并不是一種新技術(shù),它早在2006年就出來了,只是在網(wǎng)上介紹它利用它來操作Excel的說明文章和示例太少了,也就很少有人去應用它了。OpenXML(OOXML)是微軟在Office 2007中提出的一種新的文檔格式,Office 2007中的Word、Excel、PowerPoint默認均采用OpenXML格式 。OpenXML在2006年12月成為了ECMA規(guī)范的一部分。至于它的其它介紹,大家到網(wǎng)上查看吧,它的功能是非常強大的。我們今天主要用它來操作Excel。 在介紹如何做之前,我們先做好準備工作: 第一、 報表的模板:我們已經(jīng)在上面做好了。 第二、 下載OpenXMLSDKv2.msi,(下載地址:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=5124)安裝一下OpenXMLSDKv2.msi,在項目中引用 DocumentFormat.OpenXml.dll 和WindowsBase.dll 準備工作做完了,現(xiàn)在看看如何把我們查詢出的數(shù)據(jù)寫到Excel中,生成報表吧。 代碼如下: ![]() View Code
1 public byte[] WriteToExcel( CarryResource CarryResource, string ModelUrl) 現(xiàn)在我們報表是以流的形式存在于內(nèi)存中,在我的項目中,我是把流上傳到MOSS上的Excel server服務器供用戶查看及下載。在此我們可以把流下載到本地看一下效果。 ![]() View Code
1 byte[] bytes = WriteToExcel( CarryResource CarryResource, string ModelUrl)//這兩個參數(shù),我就不寫值了。
下載后打開就可以看到如下的報表了:
至此,我們的報表就生成好了,其實,OpenXMl還有很多種其它的用法,方法也有很多種,我這里只是一種最簡單,也是最有效的用法。起到一個拋磚引玉的作用。希望大家深深挖掘它,和大家來一起分享。最后一篇《萬能報表之圖片篇》最晚我也將會在這個星期天寫出來,分享給大家。大家有什么不明白的地方可以留言一起討論,進行編輯完善。 |
|
|