一種電子報表生成方法及裝置的制造方法
【技術領域】
[0001] 本發明設及電子報表技術領域,更具體地說,設及一種電子報表生成方法及裝置。
【背景技術】
[0002] 電子報表是很多商業應用系統中用于數據對賬、展示、分析、統計等功能的電子文 件,作為商業應用系統中的重要組成部分,電子報表的數據量逐日增大且電子報表的格式 日趨復雜。
[0003] 例如,在代理財政綜合服務的系統建設中,某銀行需要按照財政部、人民銀行的要 求生成各類日報、月報、年報等,所要出具的電子報表的數據規模W及格式要求如下:
[0004] (1)數據量在數萬行到十幾萬行之間。在一些交易量較大的工作日中,財政日報的 數據記錄經常會有數萬條,而全年利息計算時所要處理的數據量也將達到數十萬條。
[0005] (2)財政部、人民銀行等單位的報表格式較復雜,對分頁、分欄、空行、單元格行高、 列寬、字體、合并單元格等報表樣式也有較嚴格的要求。
[0006] (3)一份報表不能分解成多張完成,也不能在表內分多個sheet展不。
[0007]W財政授權支出日報為例來說明電子報表的格式要求,要求對所有的數據行進行 分頁,每頁共計24行,同時,在每一頁內,要求對所有數據分兩列顯示,左右各24條數據,序 號按照先左后右的順序遞增,對每個單元格中的中文和金錢等都各有要求,另外,對于制表 日期、當前頁數、總頁數等信息要隨時間、頁碼自動變更。
[0008]目前生成電子報表的工具分別是;采用ApacheP0I類庫操作Excel的各類工具, 比如潤乾報表、Excel化iIs(-種基于ApacheP0I類庫的java報表制作工具)和JXLS(- 種基于ApacheP0I類庫的java報表制作工具)等。
【發明內容】
[0009] 有鑒于此,本發明的目的是提供一種電子報表生成方法及裝置,用于提供一種不 基于ApacheP0I類庫等現有技術的電子報表生成方式。為了實現上述目的,本發明提供如 下技術方案:
[0010] 本發明一種電子報表生成方法,所述方法包括:
[0011] 獲取所述電子報表對應的模板文件;
[0012] 對所述模板文件進行解析,得到需進行修改的多個底層可擴展標記語言文件;
[0013] 依據所述多個底層可擴展標記語言文件,對所述多個底層可擴展標記語言文件在 程序中對應的基礎類進行初始化,得到所述多個底層可擴展標記語言文件中的sheet,xml 文件和sharedStrings.xml文件中指向數據的鏈接行,其中所述sheet,xml文件為電子表 格中工作表的文件,sharedStrings.xml文件用于存儲所述電子報表中每一個sheet的真 實數據;
[0014] 獲取其他底層可擴展標記語言文件的修改數據W及依據所述鏈接行中的每個組 件獲取所述sheet,xml文件和sharedStrings.xml文件中每個單元格所需的真實數據,其 中每個組件用于指向所述電子報表中每個單元格所需數據;
[0015] 使用文件輸入輸出流的方式將所述真實數據和所述修改數據寫入到對應的所述 多個底層可擴展標記語言文件中;
[0016] 將寫入數據的多個底層可擴展標記語言文件進行壓縮,并將壓縮后得到的壓縮包 的文件后綴名修改為所述電子報表對應的后綴名,W得到所述電子報表。
[0017] 優選地,所述使用文件輸入輸出流的方式將所述真實數據和所述修改數據寫入到 對應的所述多個底層可擴展標記語言文件中,包括:
[0018] 將所述真實數據和所述修改數據寫入到內存中;
[0019] 當所述內存中所述數據的數據量大于第一預設值時,從所述內存中獲取數據量為 第二預設值的數據;
[0020] 使用文件輸入輸出流的方式將從內存中獲取的數據寫入到對應的所述多個底層 可擴展標記語言文件中。
[0021] 優選地,所述依據所述多個底層可擴展標記語言文件,對所述多個底層可擴展標 記語言文件在程序中對應的基礎類進行初始化,得到所述多個底層可擴展標記語言文件中 的sheet, xml文件和sharedStrings. xml文件中指向數據的鏈接行,包括;
[0022] 依據所述多個底層可擴展標記語言文件,對所述多個底層可擴展標記語言文 件在程序中對應的基礎類進行初始化,并采用自上而下的方式對sheet, xml文件和 sharedStrings. xml文件中的組件進行處理,得到所述多個底層可擴展標記語言文件中的 sheet, xml文件和sharedStrings. xml文件中指向數據的鏈接行。
[0023] 優選地,所述使用文件輸入輸出流的方式將所述真實數據寫入到對應的所述多個 底層可擴展標記語言文件中,包括:
[0024] 判斷從數據源獲取到的真實數據是否可W直接寫入對應的所述多個底層可擴展 標記語言文件中;
[0025] 如果是,使用文件輸入輸出流的方式將所述真實數據寫入到對應的所述多個底層 可擴展標記語言文件中;
[0026] 如果否,對從數據源中獲取的真實數據進行處理W使其可W寫入到對應的所述多 個底層可擴展標記語言文件中,并使用文件輸入輸出流的方式將處理后的真實數據寫入到 對應的所述多個底層可擴展標記語言文件中。
[0027] 優選地,當數據源是數據庫時,使用S化標簽獲取數據庫中的真實數據,當數據源 是文件時,使用File標簽獲取文件中的真實數據。
[0028] 本發明提供一種電子報表生成裝置,所述裝置包括:
[0029] 第一獲取單元,用于獲取所述電子報表對應的模板文件;
[0030] 解析單元,用于對所述模板文件進行解析,得到需進行修改的多個底層可擴展標 記語言文件;
[0031] 初始化單元,用于依據所述多個底層可擴展標記語言文件,對所述多個底層可擴 展標記語言文件在程序中對應的基礎類進行初始化,得到所述多個底層可擴展標記語言文 件中的sheet, xml文件和sharedStrings. xml文件中指向數據的鏈接行,其中所述sheet, xml文件為電子表格中工作表的文件,sharedStrings. xml文件用于存儲所述電子報表中 每一個sheet的真實數據;
[0032] 第二獲取單元,用于獲取其他底層可擴展標記語言文件的修改數據W及依據所述 鏈接行中的每個組件獲取所述sheet, xml文件和sharedStrings. xml文件中每個單元格所 需的真實數據,其中每個組件用于指向所述電子報表中每個單元格所需數據;
[0033] 寫入單元,用于使用文件輸入輸出流的方式將所述真實數據和所述修改數據寫入 到對應的所述多個底層可擴展標記語言文件中;
[0034] 修改單元,用于將寫入數據的多個底層可擴展標記語言文件進行壓縮,并將壓縮 后得到的壓縮包的文件后綴名修改為所述電子報表對應的后綴名,W得到所述電子報表。 [00巧]優選地,所述寫入單元包括:
[0036] 第一寫入子單元,用于將所述真實數據和所述修改數據寫入到內存中;
[0037] 獲取子單元,用于當所述內存中所述數據的數據量大于第一預設值時,從所述內 存中獲取數據量為第二預設值的數據;
[0038] 第二寫入子單元,用于使用文件輸入輸出流的方式將從內存中獲取的數據寫入到 對應的所述多個底層可擴展標記語言文件中。
[0039] 優選地,所述初始化單元具體用于:依據所述多個底層可擴展標記語言文件,對所 述多個底層可擴展標記語言文件在程序中對應的基礎類進行初始化,并采用自上而下的方 式對sheet, xml文件和sharedStrings. xml文件中的組件進行處理,得到所述多個底層可 擴展標記語言文件中的sheet, xml文件和sharedStrings. xml文件中指向數據的鏈接行。
[0040] 優選地,所述寫入單元包括:
[0041] 判斷子單元,用于判斷從數據源獲取到的真實數據是否可W直接寫入對應的所述 多個底層可擴展標記語言文件中;
[0042] 第=寫入子單元,用于當所述判斷子單元判斷從數據源獲取到的真實數據可W直 接寫入對應的所述多個底層可擴展標記語言文件中時,使用文件輸入輸出流的方式將所述 真實數據寫入到對應的所述多個底層可擴展標記語言文件中;
[0043] 處理子單元,用于當所述判斷子單元判斷從數據源獲取到的真實數據不可W直接 寫入對應的所述多個底層可擴展標記語言文件中時,對從數據源中獲取的真實數據進行處 理W使其可W寫入到對應的所述多個底層可擴展標記語言文件中,并使用文件輸入輸出流 的方式將處理后的真實數據寫入到對應的所述多個底層可擴展標記語言文件中。
[0044] 優選地,當數據源是數據庫時,使用S化標簽獲取數據庫中的真實數據,當數據源 是文件時,使用File標簽獲取文件中的真實數據。
[0045] 與現有技術相比,本發明的優點如下:
[0046] 本發明提供的電子報表生成方法及裝置,在獲取到電子報表對應的模板文件 后,可W對模板文件進行解析,得到需進行修改的多個底層XML巧xtensibleMarkup Language,可擴展標記語言)文件,然后通過對其進行一系列處理后得到一壓縮包,再將 該壓縮包的文件后綴名修改為所述電子報表對應的后綴名,W得到所述電子報表,因此由 Microsoft開發的WXML為基礎的電子表格都可W采用本發明實施例提供的電子報表生 成方法得到,并且從本發明實施例提供的電子報表生成方法及裝置所示流程來看,其在生 成電子報表過程中并未基于ApacheP0I類庫等現有技術,而是一種新的有別于現有基于 ApacheP0I類庫等現有技術的電子報表生成方式。
【附圖說明】
[0047] 為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現 有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發明的實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可W根據 提供的附圖獲得其他的附圖。
[0048] 圖1為本發明實施例提供的電子報表生成方法的一種流程圖;
[0049] 圖2為本發明實施例提供的一種模板文件的示意圖;
[0050] 圖3為本發明實施例提供的模板文件修改解壓后得到的文件夾中的文件結構圖;
[0051] 圖4為本發明實施例提供的[Content_Types].xml的文檔結構圖;
[0052] 圖5為本發明實施例提供的woricbook.xml的文檔結構圖;
[0053] 圖6為本發明實施例提供的wor化ook.xml.rels的文檔結構圖;
[0054]