陳雪蓮
摘 要:嘗試對復雜報表進行結構化描述,利用結構化描述數據和自定義的用戶對象提供的接口極大地簡化了復雜報表的制作,就復雜報表的結構化描述做了詳細的描述。
關鍵詞:結構化;復雜報表;自動生成
1 引言
在國內的數據庫應用開發中,復雜報表的制作始終是一個棘手的問題,這是由報表表現形式的復雜性和格式、內容的靈活性決定的。而常用的開發工具所生成的報表通常格式簡單、功能單一,對于實際問題中出現的特殊格式,如多層表頭報表,各種票據格式等,都顯得力不從心。
目前,在數據處理和信息管理方面,使用MS Excel制作各種報表非常普及,用戶希望一個使用管理信息系統能將生成的報表導出到Excel中,以進一步進行加工處理,擴展系統信息處理能力。
為滿足工程項目開發的實際需要,嘗試對復雜報表形式進行結構化描述,并在此基礎上定義了一個報表生成與excel導出對象類,極大的簡化了復雜報表的制作。本文就復雜報表的結構化描述及使用OLE技術實現復雜報表生成的原理做了詳細介紹。
2 復雜報表結構化模型
2.1 模型原理
復雜報表結構化模型的原理如圖1所示,報表的結構化描述與自動生成程序從報表結構化描述數據庫獲取報表結構信息,從MIS數據數據庫獲取報表數據內容,經過綜合處理之后,將結構導出到excel文件中,生成目標報表。
2.2 復雜報表結構模型
⑴報表結構化描述模型。為了描述問題的簡潔,本文規定:
1)縱向位置:對應于Excel報表中的列序,起始位置為1,自左向右順序計數;
2)橫向位置:對應于Excel報表中的行序,起始位置為1,自上而下順序計數;
3)數據標題:報表表頭中與表體的某一列有直接對應關系的文字描述標題;
4)文本標題:報表表頭中描述數據標題之間關系,一個文本標題可以覆蓋2個或2個以上的數據標題或文本標題,是報表復雜性的主要表現。
報表結構化描述的數據結構定義如下:
Structure stru_head
String HeadID //標題的縱向位置描述
Integer Rand //標題的橫向位置描述
String HeadText //標題顯示文本
Integer ParentRank //父標題的橫向位置描述
String HeadName //數據標題對應的字段名
End structure
其中,HeadID的取值定義可以區分數據標題和文本標題,數據標題HeadID取值為其在報表表體中對應的列序,文本標題的HeadID的取值由它所覆蓋的所有標題的序列中最小與最大兩個序列組成。文本標題的Rank等于其在報表表頭中的行序,數據標題的Rank一律取值為報表表頭的總行數。標題的ParentRank定義為相鄰上層標題的行序,如果該標題沒有相鄰上層標題,則其ParentRank取值為0。
⑵報表結構化描述實例。本文選取一個具有多層表頭的統計報表為例,利用本文提出的復雜報表結構化描述模型對該報表進行結構化描述。多層表頭統計報表內容如表1所示,根據報表結構化模型描述的報表結構如表2所示。
表1中的標題“路線編號”與表體中的第1列直接對應,是數據標題,因此其HeadID取值為“01”;該報表表頭部分共有3行,故其Rank取值為3;其沒有相鄰上層標題,所以其ParentRank取值為0;要顯示的文本即為HeadText的值“路線編號”;HeadName的取值為其在數據庫表中的字段名C_lxbh.
表1中的標題“結構形式”與表體中的列不直接對應,是文本標題,它覆蓋了數據標題“上部”(列序03)和“下部”(列序04)兩列,因此其HeadID取值為“0304”;其位于報表表頭的第2行,故其rank為2;其相鄰上層標題位于第一行,故parentrank為1,要顯示的文本即為HeadText的值“結構形式”;文本標題沒有數據庫表中字段與其對應,故其HeadName項為空。
3 結論
本文介紹了復雜報表的結構化描述,實現了Excel報表的自動生成,該方法對于各種信息系統中復雜報表的生成具有一定的通用性,極大的縮短了相似功能的開發周期。
[參考文獻]
[1]吳雷,袁兆山,李超.B/S結構下復雜報表實現技術的研究[J].計算機應用研究,2006, 23(5):83-85.
[2]程志蓉.智能報表生成系統的研究[J].許昌學院學報,2004,23(2):93-95.