999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用XML和Excel設(shè)計(jì)動態(tài)通用報(bào)表系統(tǒng)的新方法

2008-04-12 00:00:00王勇超王新衛(wèi)楊凱鋒
現(xiàn)代電子技術(shù) 2008年18期

摘 要:提出一種利用XML和Excel設(shè)計(jì)動態(tài)通用報(bào)表系統(tǒng)的新方法。首先對Excel報(bào)表模板進(jìn)行分解,生成報(bào)表模板的報(bào)表信息、架構(gòu)信息和映射信息,再根據(jù)統(tǒng)計(jì)模板生成統(tǒng)計(jì)分析信息,這些信息均以XML文檔的形式存入數(shù)據(jù)庫。在系統(tǒng)運(yùn)行時,將用戶上報(bào)的Excel文件中的報(bào)表數(shù)據(jù)提取出來,以XML文檔的形式存入數(shù)據(jù)庫。然后結(jié)合XPath和XQuery對報(bào)表數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,得到統(tǒng)計(jì)報(bào)表數(shù)據(jù)。最后將統(tǒng)計(jì)報(bào)表數(shù)據(jù)組裝為Excel文件輸出給用戶。采用這種方法設(shè)計(jì)的報(bào)表系統(tǒng)動態(tài)靈活、通用性強(qiáng)。

關(guān)鍵詞:XML;Excel;XPath;XQuery

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:B 文章編號:1004373X(2008)1809304

A New Way to Design Generalpurpose Reporting Systems Using XML and Excel

WANG Yongchao1,ZHANG Jing1,MA Jing2,WANG Xinwei1,YANG Kaifeng1

( 1.Faculty of Computer Science and Engineering,Xi′an University of Technology,Xi′an,710048,China;2.Xi′an Technological University,Xi′an,710048,China)

Abstract:This paper discusses a new way to design dynamic and generalpurpose reporting systems,which utilizes XML and Excel.Excel templates is deconstructed and reporting information,structure information and mapping information of templates are built,and statistics by a statistic template is generated,and all these information are stored in database in XML format.After that,data is extracted from user uploaded Excel files and it is saved to database in XML format.Using Xpath and XQuery,reporting data and statistic data which is further composed into an Excel file to users.This kind of design makes reporting system more flexible and customizable.

Keywords:XML;Excel;XPath;XQuery

1 引 言

在現(xiàn)實(shí)生活中特別是在企業(yè)里面,報(bào)表無處不在,報(bào)表生成工具在管理信息系統(tǒng)中有著舉足輕重的地位。通過對生產(chǎn)活動中的各種數(shù)據(jù)進(jìn)行匯總、統(tǒng)計(jì)和分析,可以多層次,多角度、全面而詳細(xì)地了解企業(yè)生產(chǎn)運(yùn)作狀態(tài),是管理高層進(jìn)行決策規(guī)劃的數(shù)據(jù)基礎(chǔ)。然而,由于我國企業(yè)報(bào)表的設(shè)計(jì)規(guī)劃很不規(guī)范,樣式規(guī)格紛繁復(fù)雜,對于每一個信息管理系統(tǒng)來說,報(bào)表部分都是極其耗時費(fèi)力的工作,而且還常不能滿足用戶靈活變動的要求。設(shè)計(jì)一個報(bào)表樣式可以由用戶靈活設(shè)計(jì),通用的報(bào)表系統(tǒng)是一個非常實(shí)際意義的研究課題。

2 報(bào)表系統(tǒng)研究現(xiàn)狀

Excel是專業(yè)的制表工具,內(nèi)置豐富的公式函數(shù),具有強(qiáng)大的數(shù)據(jù)統(tǒng)計(jì)分析功能。目前在企業(yè)當(dāng)中,Excel的應(yīng)用非常的普遍,幾乎所有的計(jì)劃統(tǒng)計(jì)部門都采用Excel作為日常最主要的報(bào)表工具。因此,在動態(tài)通用報(bào)表的設(shè)計(jì)方面,以Excel組件為操作對象進(jìn)行報(bào)表系統(tǒng)的開發(fā)很受軟件開發(fā)者的歡迎。目前這方面的研究已經(jīng)取得了很大的成果[1],但是由于以Excel文件作為文件對象訪問方式要求對每一種樣式的Excel文件都要單獨(dú)編程,工作量大且靈活性差,以Excel文件作為數(shù)據(jù)庫訪問方式對于規(guī)范的二維順序表樣式的報(bào)表沒有問題,但是對于不規(guī)則的交叉表、混合統(tǒng)計(jì)匯總表等就無能為力,而實(shí)際當(dāng)中這類不規(guī)范的占的比重還非常大。因此在實(shí)際應(yīng)用當(dāng)中還有很多問題需要解決。

XML是一種可擴(kuò)展性標(biāo)記語言,其自描述性使其非常適用于不同應(yīng)用間的數(shù)據(jù)交換,而且這種交換是不以預(yù)先規(guī)定一組數(shù)據(jù)結(jié)構(gòu)定義為前提。XML最大的優(yōu)點(diǎn)是它對數(shù)據(jù)描述和數(shù)據(jù)傳送的能力,因此具備很強(qiáng)的開放性。如果用XML來描述報(bào)表數(shù)據(jù),則報(bào)表的設(shè)計(jì)就會具有很大的靈活性,因此利用XML實(shí)現(xiàn)動態(tài)通用報(bào)表的研究也開始受到人們的重視,并取得了一定的成果。但是也都存在一些問題,如參考文獻(xiàn)[2]中提出的方法僅限于對已有數(shù)據(jù)的查詢結(jié)果進(jìn)行格式調(diào)整,只是在最后報(bào)表的生成階段實(shí)現(xiàn)了靈活設(shè)置,參考文獻(xiàn)[3]所提出的方法需要構(gòu)建知識表達(dá)和知識庫,實(shí)際操作性較差。參考文件[4]采用模板技術(shù),模板與數(shù)據(jù)相分離,采用數(shù)據(jù)庫方式存儲報(bào)表模板和系統(tǒng)各種數(shù)據(jù),實(shí)現(xiàn)報(bào)表的權(quán)限管理、分類管理和網(wǎng)絡(luò)化管理,但是在實(shí)現(xiàn)上采用FastReport這個商用軟件實(shí)現(xiàn),無法由程序開發(fā)人員自由控制。參考文件[5]采用固定格式的文本文件作為報(bào)表文件的載體,經(jīng)過解析程序?qū)崿F(xiàn)動態(tài)報(bào)表,利用這種方法設(shè)計(jì)的報(bào)表系統(tǒng)靈活性較好,但是由于所有工作圍繞文本文件進(jìn)行,所以操控性較差,解析工作比較麻煩。

本文在對XML和Excel的進(jìn)行深入研究后,提出一種新的動態(tài)通用報(bào)表系統(tǒng)的設(shè)計(jì)方法。采用模板技術(shù),數(shù)據(jù)與表現(xiàn)分離,以XML為載體經(jīng)過解析進(jìn)行數(shù)據(jù)統(tǒng)計(jì)分析并動態(tài)生成報(bào)表。具體操作時,以企業(yè)中普遍采用的Excel文件作為報(bào)表模板和數(shù)據(jù)采集對象,對Excel文件進(jìn)行XML分解,使報(bào)表的數(shù)據(jù)和表現(xiàn)相分離,以XML的形式存入數(shù)據(jù)庫,使用XQuery語言對數(shù)據(jù)庫中的XML數(shù)據(jù)進(jìn)行統(tǒng)計(jì)和分析,通過對XML數(shù)據(jù)的組裝最后以Excel文件的形式輸出報(bào)表。

3 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)

整個報(bào)表系統(tǒng)的系統(tǒng)結(jié)構(gòu)如圖1所示,由報(bào)表模板生成、統(tǒng)計(jì)模板生成、報(bào)表數(shù)據(jù)采集、報(bào)表組裝4大子系統(tǒng)及數(shù)據(jù)庫組成。

報(bào)表模板生成子系統(tǒng)將Excel文件格式的報(bào)表模板進(jìn)行XML分解,將報(bào)表的結(jié)構(gòu)信息以XML格式存入數(shù)據(jù)庫。統(tǒng)計(jì)模板生成子系統(tǒng)負(fù)責(zé)生成描述報(bào)表中各數(shù)據(jù)組成元素間邏輯關(guān)系的信息,同樣以XML格式存入數(shù)據(jù)。報(bào)表數(shù)據(jù)采集子系統(tǒng)負(fù)責(zé)采集具體報(bào)表文件中的數(shù)據(jù),根據(jù)某種報(bào)表模板的XML描述信息將其具體的數(shù)據(jù)以XML格式存入數(shù)據(jù)庫。報(bào)表組裝子系統(tǒng)則根據(jù)報(bào)表模板的結(jié)構(gòu)信息、數(shù)據(jù)邏輯關(guān)系和具體數(shù)據(jù)進(jìn)行統(tǒng)計(jì)計(jì)算并組裝,以Excel文件的格式輸出報(bào)表。其中報(bào)表模板生成子系統(tǒng)是整個系統(tǒng)的基礎(chǔ)和核心,下面也將以報(bào)表模板生成為重點(diǎn)對各個子系統(tǒng)進(jìn)行詳細(xì)介紹。

3.1 報(bào)表模板生成

報(bào)表模板生成子系統(tǒng)的系統(tǒng)結(jié)構(gòu)如圖2所示,將Excel文件格式的報(bào)表模板進(jìn)行XML分解,生成與其對應(yīng)的模板信息、架構(gòu)信息、映射信息的XML描述。這3種信息的XML描述存放在數(shù)據(jù)庫(如MS SQL Server2005)中,在后面的統(tǒng)計(jì)分析、數(shù)據(jù)采集以及報(bào)表組裝時都會用到。

模板信息描述報(bào)表的基本信息,包括模板標(biāo)識、模板定制人、模板定制時間、報(bào)表類型、表頭信息、數(shù)據(jù)信息等內(nèi)容。報(bào)表類型主要分為順序型、交叉型和混雜型3類。順序型報(bào)表最為常見,也是惟一可以直接轉(zhuǎn)化為數(shù)據(jù)庫形式的報(bào)表,即表頭為上面若干行,下面為數(shù)據(jù)。交叉型報(bào)表的特點(diǎn)是上面若干行和左面若干列為表頭,中間部分為數(shù)據(jù)。混雜型報(bào)表的表頭和數(shù)據(jù)相互交錯,很不規(guī)范,一般都可以通過一定的手段轉(zhuǎn)化為交叉表。表頭信息和數(shù)據(jù)信息主要說明表頭和數(shù)據(jù)區(qū)域的范圍。具體就是在工作表中的起始行號、列號以及行數(shù)、列數(shù)。

架構(gòu)信息描述報(bào)表所包含信息的結(jié)構(gòu)狀況,即Excel模板樣式的樹型結(jié)構(gòu)。Excel模板樣式都可以用樹型結(jié)構(gòu)表示。報(bào)表有效區(qū)域的單元格可以分為2大類:一類是表頭,表示的是框架信息,在結(jié)構(gòu)樹中是枝干;另一類是數(shù)據(jù),是具體的值,在結(jié)構(gòu)樹中是葉子結(jié)點(diǎn)。架構(gòu)信息就是Excel模板樣式結(jié)構(gòu)樹對應(yīng)的XML描述。如圖3所示的報(bào)表模板對應(yīng)的模板結(jié)構(gòu)樹如圖4所示,經(jīng)處理后得到的架構(gòu)信息如圖5所示。

映射信息描述報(bào)表中每一個數(shù)據(jù)單元格與模板樣式結(jié)構(gòu)樹中的每一個葉子節(jié)點(diǎn)的一一對應(yīng)關(guān)系。圖3所示的報(bào)表模板經(jīng)處理后得到的映射信息如圖6所示。通過映射信息,就可以知道Excel報(bào)表文件中的每一個有效的數(shù)據(jù)單元格所表示的具體的含義(即葉子節(jié)點(diǎn)在結(jié)構(gòu)樹中的位置),也可以知道每一個葉子節(jié)點(diǎn)的值(Excel報(bào)表文件中對應(yīng)的單元格中的數(shù)值)。如圖3所示報(bào)表模板中的“D6”單元格(第6行第4列)所表示的就是“/洗煤名稱/洗煤/本季度總產(chǎn)量/目標(biāo)”,同樣,“/洗煤名稱/合計(jì)/本季度總產(chǎn)量/計(jì)劃”的值就是單元格“C4”(第4行第3列)的值。

圖5和圖6中前面帶“+”號的數(shù)據(jù)項(xiàng)沒有展開,因其結(jié)構(gòu)和上面已經(jīng)展開數(shù)據(jù)項(xiàng)的相似,為了完成的顯示整體內(nèi)容故處于折疊狀態(tài)。

3.2 統(tǒng)計(jì)模板生成

報(bào)表中的數(shù)據(jù)來源主要有2種:直接獲取的和統(tǒng)計(jì)計(jì)算的結(jié)果。統(tǒng)計(jì)模板生成的主要任務(wù)就是描述統(tǒng)計(jì)計(jì)算的方式方法。Excel強(qiáng)大的統(tǒng)計(jì)功能依賴于其豐富的公式和函數(shù),而公式和函數(shù)可以將Excel文件中的指定單元格作為操作對象又是其充分發(fā)揮作用的基礎(chǔ)。同理,報(bào)表統(tǒng)計(jì)必然要求系統(tǒng)能夠方便快捷的獲取現(xiàn)有的報(bào)表數(shù)據(jù),而報(bào)表數(shù)據(jù)是以XML文檔的格式存在數(shù)據(jù)庫中的,因此如何從XML文檔中獲取數(shù)據(jù)是關(guān)鍵問題。

XPath是一門在 XML 文檔中查找信息的語言。XPath可用來在XML文檔中對元素和屬性進(jìn)行遍歷。XPath是 W3C XSLT 標(biāo)準(zhǔn)的主要元素,并且XQuery和XPointer同時被構(gòu)建于XPath表達(dá)之上。

XQuery是一種可以查詢結(jié)構(gòu)化或半結(jié)構(gòu)化XML 數(shù)據(jù)的語言。XQuery 基于現(xiàn)有的 XPath 查詢語言,并支持更好的迭代、更好的排序結(jié)果以及構(gòu)造必須的XML的功能。若要查詢XML類型的變量或列中存儲的XML實(shí)例,可以使用XML數(shù)據(jù)類型方法。例如,可以聲明一個XML類型的變量,然后使用 XML 數(shù)據(jù)類型的 query() 方法來查詢此變量。

前面的模板生成將Excel模板分解成模板信息、架構(gòu)信息和映射信息,特別是映射信息的生成,使得僅以行號和列號標(biāo)識的單元格具備了實(shí)際的現(xiàn)實(shí)意義。使用XQuery語言對數(shù)據(jù)庫中的XML數(shù)據(jù)進(jìn)行自動提取[6],并將提取的數(shù)據(jù)進(jìn)行一些運(yùn)算,按照Excel公式和函數(shù)的功能設(shè)計(jì)理念,同一報(bào)表內(nèi)部的數(shù)據(jù)邏輯關(guān)系可以非常容易的進(jìn)行設(shè)置。仍以圖3中的報(bào)表為例,合計(jì)的入洗煤量等于洗煤的入洗煤量加上塊煤的入洗煤量,即:“/洗煤名稱/合計(jì)/入洗煤量”=“/洗煤名稱/洗煤/入洗煤量”+“/洗煤名稱/塊煤/入洗煤量”。如果加上模板的其他信息,則不同報(bào)表之間的數(shù)據(jù)邏輯關(guān)系也可以設(shè)置。如計(jì)劃“/洗煤名稱/合計(jì)/本季度總產(chǎn)量/計(jì)劃”=“洗煤產(chǎn)品產(chǎn)量計(jì)劃表/{本季度}/總產(chǎn)量/計(jì)劃”。統(tǒng)計(jì)模板生成系統(tǒng)結(jié)構(gòu)如圖7所示。

3.3 報(bào)表數(shù)據(jù)采集

將XML架構(gòu)與工作簿相關(guān)聯(lián),能夠更為簡單和可靠地在Excel中導(dǎo)入和導(dǎo)出數(shù)據(jù)。當(dāng)XML 架構(gòu)添加到工作簿時,Excel 會創(chuàng)建一個稱為XML 映射的對象。這些 XML 映射可以將單元格或范圍映射到XML 架構(gòu)中的元素。在導(dǎo)入或?qū)С鯴ML 數(shù)據(jù)時,Excel 使用這些映射將映射范圍的內(nèi)容與架構(gòu)中的元素聯(lián)系在一起。

數(shù)據(jù)采集的系統(tǒng)結(jié)構(gòu)如圖8所示。在前面,已經(jīng)根據(jù)報(bào)表模板生成了架構(gòu)信息、映射信息等XML描述并存入數(shù)據(jù)庫;上報(bào)數(shù)據(jù)的時候,根據(jù)這些信息和上報(bào)的Excel報(bào)表文件結(jié)合,就可以將Excel報(bào)表文件中的數(shù)據(jù)信息提取出來,將其以XML數(shù)據(jù)的形式存入數(shù)據(jù)庫,同時記錄上報(bào)人、上報(bào)時間等報(bào)表信息。

3.4 報(bào)表統(tǒng)計(jì)輸出

報(bào)表組裝輸出的系統(tǒng)結(jié)構(gòu)如圖9所示。首先根據(jù)報(bào)表信息和統(tǒng)計(jì)分析信息對報(bào)表數(shù)據(jù)進(jìn)行統(tǒng)計(jì)、匯總計(jì)算,生成最終報(bào)表的報(bào)表數(shù)據(jù),最后根據(jù)架構(gòu)信息和映射信息組裝成Excel報(bào)表文件輸出給用戶。

4 結(jié) 語

本文通過對XML和Excel的研究,提出一種利用XML和Excel設(shè)計(jì)動態(tài)通用報(bào)表系統(tǒng)的新方法,并在圖9 報(bào)表生成模塊系統(tǒng)結(jié)構(gòu)山東兗礦集團(tuán)煤業(yè)公司煤礦的報(bào)表管理系統(tǒng)中進(jìn)行實(shí)際應(yīng)用。采用這種方法設(shè)計(jì)的報(bào)表系統(tǒng)可以方便靈活地設(shè)置報(bào)表模板,完成數(shù)據(jù)上報(bào)以及統(tǒng)計(jì)、匯總和分析,并且適用于各行各業(yè),通用性強(qiáng)。

參 考 文 獻(xiàn)

[1]文靜華,張梅.基于Excel的企業(yè)通用動態(tài)報(bào)表生成工具的設(shè)計(jì)[J].計(jì)算機(jī)工程,2005,31(4):221223.

[2]艾永亮,王保保.一種新的通用報(bào)表模型的研究與實(shí)現(xiàn)\\.現(xiàn)代電子技術(shù),2007,30(4):172173.

[3]潘福成,張士杰.基于XML的智能報(bào)表生成工具的研究[J].小型微型計(jì)算機(jī)系統(tǒng),2005,26(1):134138.

[4]周一,王世耕,黃忠全,等.基于FastReport的通用報(bào)表系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2008(2):284285.

[5]張亞平,賀占莊.B/S架構(gòu)下動態(tài)報(bào)表的一種實(shí)現(xiàn)方式[J].計(jì)算機(jī)技術(shù)與發(fā)展,2007(4):9395.

[6]Scott Boag,Don Chamberlin,Mary F Fernández,et al.XQuery 1.0: An XML Query Language\\.http://www.w3.org/TR/2007/REC-xquery-20070123.

作者簡介 王勇超 男,1979年出生,河北定州人,碩士。研究方向?yàn)橛?jì)算機(jī)應(yīng)用、高性能計(jì)算。

張 璟 男,1958年出生,陜西寶雞人,教授,博士生導(dǎo)師。主要研究方向?yàn)橛?jì)算機(jī)網(wǎng)絡(luò)、軟件開發(fā)以及電子商務(wù)。

馬 靜 女,1980年出生,助教。主要研究方向?yàn)橛?jì)算機(jī)網(wǎng)絡(luò)。

王新衛(wèi) 女,1980年出生,圖書館館員。主要從事計(jì)算機(jī)管理和信息技術(shù)的研究工作。

楊凱鋒 男,1970年出生,講師。主要研究方向?yàn)橛?jì)算機(jī)應(yīng)用。

主站蜘蛛池模板: 国产日韩久久久久无码精品| 亚洲欧美另类日本| 国产小视频a在线观看| 亚洲黄色片免费看| 一级毛片不卡片免费观看| 国产精品手机在线观看你懂的| 欧美全免费aaaaaa特黄在线| 亚洲天堂网站在线| 亚洲欧美精品日韩欧美| 久久久久免费精品国产| 日韩精品久久久久久久电影蜜臀| 黄片在线永久| 亚洲一区网站| 国产日韩精品欧美一区喷| 亚洲一区二区约美女探花| 国产麻豆福利av在线播放| 国产美女在线观看| 色网站在线视频| 精久久久久无码区中文字幕| 凹凸精品免费精品视频| 69国产精品视频免费| www精品久久| 97青青青国产在线播放| 久久人人爽人人爽人人片aV东京热| 国产青青操| 久久人妻xunleige无码| 四虎国产永久在线观看| 成人毛片在线播放| 亚洲色图综合在线| 青青草国产免费国产| 2021国产精品自产拍在线观看| 国产特级毛片| 国产精品刺激对白在线| 国产99精品久久| 国产精品综合久久久| 日韩成人在线网站| 麻豆国产原创视频在线播放| 青青青国产视频| 国产大片黄在线观看| 国产亚洲欧美在线人成aaaa| 日韩高清欧美| 国产一在线观看| 国产丰满大乳无码免费播放| 亚洲黄色片免费看| 爱色欧美亚洲综合图区| 青草免费在线观看| 国产精品女同一区三区五区| 欧洲成人免费视频| 午夜电影在线观看国产1区| 婷婷激情五月网| 拍国产真实乱人偷精品| 黄色免费在线网址| 国产黄色片在线看| 成人夜夜嗨| 在线毛片网站| 亚洲美女一区二区三区| 毛片三级在线观看| 亚洲一区二区三区香蕉| 亚洲欧美一区二区三区蜜芽| 欧美国产精品不卡在线观看| 日韩高清一区 | 91在线丝袜| 99久久精品国产自免费| 91网址在线播放| 一级做a爰片久久免费| 亚洲精品无码不卡在线播放| 91福利免费视频| 天堂成人在线| 在线免费看黄的网站| 亚洲最大综合网| 91小视频在线观看| 欧美成在线视频| 日韩无码黄色| 91小视频在线观看| 国产第一页屁屁影院| 国产欧美日韩在线一区| 激情视频综合网| 99一级毛片| 99热最新网址| 成人毛片免费在线观看| 无码'专区第一页| 播五月综合|