亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        摘 要:提出一種利用XML和Excel設(shè)計動態(tài)通用報表系統(tǒng)的新方法。首先對Excel報表模板進(jìn)行分解,生成報表模板的報表信息、架構(gòu)信息和映射信息,再根據(jù)統(tǒng)計模板生成統(tǒng)計分析信息,這些信息均以XML文檔的形式存入數(shù)據(jù)庫。在系統(tǒng)運(yùn)行時,將用戶上報的Excel文件中的報表數(shù)據(jù)提取出來,以XML文檔的形式存入數(shù)據(jù)庫。然后結(jié)合XPath和XQuery對報表數(shù)據(jù)進(jìn)行統(tǒng)計分析,得到統(tǒng)計報表數(shù)據(jù)。最后將統(tǒng)計報表數(shù)據(jù)組裝為Excel文件輸出給用戶。采用這種方法設(shè)計的報表系統(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)實生活中特別是在企業(yè)里面,報表無處不在,報表生成工具在管理信息系統(tǒng)中有著舉足輕重的地位。通過對生產(chǎn)活動中的各種數(shù)據(jù)進(jìn)行匯總、統(tǒng)計和分析,可以多層次,多角度、全面而詳細(xì)地了解企業(yè)生產(chǎn)運(yùn)作狀態(tài),是管理高層進(jìn)行決策規(guī)劃的數(shù)據(jù)基礎(chǔ)。然而,由于我國企業(yè)報表的設(shè)計規(guī)劃很不規(guī)范,樣式規(guī)格紛繁復(fù)雜,對于每一個信息管理系統(tǒng)來說,報表部分都是極其耗時費(fèi)力的工作,而且還常不能滿足用戶靈活變動的要求。設(shè)計一個報表樣式可以由用戶靈活設(shè)計,通用的報表系統(tǒng)是一個非常實際意義的研究課題。

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

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

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

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

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

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

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

        3.1 報表模板生成

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

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

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

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

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

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

        報表中的數(shù)據(jù)來源主要有2種:直接獲取的和統(tǒng)計計算的結(jié)果。統(tǒng)計模板生成的主要任務(wù)就是描述統(tǒng)計計算的方式方法。Excel強(qiáng)大的統(tǒng)計功能依賴于其豐富的公式和函數(shù),而公式和函數(shù)可以將Excel文件中的指定單元格作為操作對象又是其充分發(fā)揮作用的基礎(chǔ)。同理,報表統(tǒng)計必然要求系統(tǒng)能夠方便快捷的獲取現(xiàn)有的報表數(shù)據(jù),而報表數(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實例,可以使用XML數(shù)據(jù)類型方法。例如,可以聲明一個XML類型的變量,然后使用 XML 數(shù)據(jù)類型的 query() 方法來查詢此變量。

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

        3.3 報表數(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ù)報表模板生成了架構(gòu)信息、映射信息等XML描述并存入數(shù)據(jù)庫;上報數(shù)據(jù)的時候,根據(jù)這些信息和上報的Excel報表文件結(jié)合,就可以將Excel報表文件中的數(shù)據(jù)信息提取出來,將其以XML數(shù)據(jù)的形式存入數(shù)據(jù)庫,同時記錄上報人、上報時間等報表信息。

        3.4 報表統(tǒng)計輸出

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

        4 結(jié) 語

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

        參 考 文 獻(xiàn)

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

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

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

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

        [5]張亞平,賀占莊.B/S架構(gòu)下動態(tài)報表的一種實現(xiàn)方式[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年出生,河北定州人,碩士。研究方向為計算機(jī)應(yīng)用、高性能計算。

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

        馬 靜 女,1980年出生,助教。主要研究方向為計算機(jī)網(wǎng)絡(luò)。

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

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

        欧美日韩一区二区三区在线观看视频 | 久久精品国产亚洲av蜜臀久久| 亚洲成人av在线蜜桃| 天堂网www资源在线| 日本a级特黄特黄刺激大片| 国产精品涩涩涩一区二区三区免费| 国产美女高潮流白浆视频| 免费观看a级片| 日日碰狠狠躁久久躁96avv| 日韩在线观看网址| 日本不卡不二三区在线看| 亚洲av日韩av女同同性| 久久精品国产亚洲av麻| 99色网站| 亚州av高清不卡一区二区| 99无码熟妇丰满人妻啪啪| 日本少妇人妻xxxxx18| 一区二区无码精油按摩| 黄色一区二区三区大全观看| 奇米影视第四色首页| 色老头一区二区三区| 亚洲视频精品一区二区三区| 白嫩人妻少妇偷人精品| 亚洲а∨天堂久久精品2021| 国产亚洲精品综合一区| 97人妻精品一区二区三区免费| 台湾佬中文网站| 国产精品户露av在线户外直播| 日韩午夜在线视频观看| 精品人妻中文av一区二区三区| 亚洲中文字幕国产综合| 日韩国产成人精品视频| av在线一区二区三区不卡| 国产精品扒开腿做爽爽爽视频| 国内精品久久久久久久久齐齐| 中文字幕亚洲乱码熟女在线| 精品人妻少妇av中文字幕| a级毛片内射免费视频| 欧美人与动牲交片免费| 国产自拍视频在线观看免费| 中文无码久久精品|