[發(fā)明專利]一種將數(shù)據(jù)導(dǎo)出為Excel文件的方法及裝置有效
| 申請(qǐng)?zhí)枺?/td> | 201110103611.5 | 申請(qǐng)日: | 2011-04-25 |
| 公開(kāi)(公告)號(hào): | CN102760118A | 公開(kāi)(公告)日: | 2012-10-31 |
| 發(fā)明(設(shè)計(jì))人: | 范登華 | 申請(qǐng)(專利權(quán))人: | 中興通訊股份有限公司 |
| 主分類號(hào): | G06F17/22 | 分類號(hào): | G06F17/22 |
| 代理公司: | 工業(yè)和信息化部電子專利中心 11010 | 代理人: | 田俊峰 |
| 地址: | 518057 廣東省深圳市南山*** | 國(guó)省代碼: | 廣東;44 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 數(shù)據(jù) 導(dǎo)出 excel 文件 方法 裝置 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別是涉及一種將數(shù)據(jù)導(dǎo)出為Excel文件的方法及裝置。
背景技術(shù)
在當(dāng)今這個(gè)以計(jì)算機(jī)作為最重要信息載體的時(shí)代,常常需要將批量數(shù)據(jù)導(dǎo)出成Microsoft?Office?Excel文件。目前,基于Java的主流開(kāi)源導(dǎo)出組件有JavaExcel?API(JXL)和POI。
JXL是一個(gè)成熟開(kāi)源的Excel電子表格讀取、修改、寫(xiě)入的項(xiàng)目。目前支持的最高版本是Excel2003,它是基于BIFF(Binary?Interchange?File?Format,二進(jìn)制交換文件格式)格式的。此時(shí),要生成一個(gè)Excel文件,必須事先知道Excel文件的大小及各工作表(sheet)、單元格的偏移量等信息。因此,它在生成Excel文件時(shí),JXL采取先將所有的數(shù)據(jù)放入內(nèi)存中,等到程序關(guān)閉時(shí),再計(jì)算Excel文件的大小,并生成Excel文件的所有信息,再一次寫(xiě)入到磁盤(pán),形成Excel文件。這種方法當(dāng)然簡(jiǎn)化了計(jì)算,但它需要對(duì)每一個(gè)單元格都生成相應(yīng)對(duì)象,當(dāng)有大批量數(shù)據(jù)時(shí),會(huì)造成內(nèi)存溢出。并且,打開(kāi)一個(gè)Excel文件,它同樣會(huì)將單元格讀出生成對(duì)象,因此它也無(wú)法通過(guò)分批次導(dǎo)入數(shù)據(jù)來(lái)減小內(nèi)存消耗。
Jakarta?POI是apache的子項(xiàng)目,它提供了一組操縱Windows文檔的JavaAPI。對(duì)Excel,目前提供HSSF和XSSF接口。HSSF(Horrible?SpreadSheetFormat)生成后綴為xls(Excel997-2003)的文件,文件格式同樣為BIFF?8。XSSF(XML?SpreadSheet?Format)生成后綴為xlsx(Excel2007)的文件,它讀寫(xiě)Office?Open?XML(OOXML,基于XML-extensible?Markup?Language語(yǔ)言的數(shù)據(jù)儲(chǔ)存語(yǔ)言為Microsoft?Office開(kāi)發(fā)所制定的技術(shù)規(guī)范)格式文件。OfficeOpen?XML是由微軟公司為Office?2007產(chǎn)品開(kāi)發(fā)的技術(shù)規(guī)范,是XML技術(shù)和ZIP技術(shù)的結(jié)合,現(xiàn)已成為國(guó)際文檔格式標(biāo)準(zhǔn)。開(kāi)發(fā)時(shí),首先生成xml文件集(稱為組件),再將文件打包成zip格式,最后重命名為xlsx后綴,就生成了我們常見(jiàn)的Excel2007文件了。雖然POI提供了讀寫(xiě)OOXML的接口,但在導(dǎo)出時(shí),仍然將全部單元格cell對(duì)象存儲(chǔ)于內(nèi)存,大數(shù)據(jù)量時(shí),仍然會(huì)造成內(nèi)存溢出。
為了實(shí)現(xiàn)大批量低內(nèi)存的導(dǎo)出成Excel文件,現(xiàn)有技術(shù)中,專利申請(qǐng)?zhí)枮镃N200810057915.0的中國(guó)專利公開(kāi)了一種將數(shù)據(jù)庫(kù)中數(shù)據(jù)導(dǎo)出成Excel文件的裝置及其方法,但該現(xiàn)有技術(shù)存在以下缺陷:一、采用先生成數(shù)據(jù)主體文件,再重新修改BIFF(Binary?Interchange?File?Format)格式的方法,內(nèi)存計(jì)算難度大,只要算錯(cuò)一位,可能導(dǎo)致生成的文件無(wú)法打開(kāi);二、同樣是由于直接修改內(nèi)存難度大、風(fēng)險(xiǎn)高的原因,進(jìn)一步開(kāi)發(fā)難度較大,很難進(jìn)一步的支持樣式設(shè)置等Excel其它常用功能;三、使用場(chǎng)景非常局限,只能針對(duì)像數(shù)據(jù)庫(kù)這種格式規(guī)整、能計(jì)算或預(yù)知行列數(shù)的情況。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是提供一種將數(shù)據(jù)導(dǎo)出為Excel文件的方法及裝置,用以解決現(xiàn)有技術(shù)中將數(shù)據(jù)導(dǎo)出為Excel文件時(shí)內(nèi)存消耗大的問(wèn)題。
為解決上述技術(shù)問(wèn)題,一方面,本發(fā)明提供一種將數(shù)據(jù)導(dǎo)出為Excel文件的方法,所述方法包括以下步驟:
建立Excel的組件包目錄結(jié)構(gòu);
在所述組件包目錄結(jié)構(gòu)下,對(duì)數(shù)據(jù)采取邊讀取邊轉(zhuǎn)換的方式,生成工作表單元格文件;
生成所述工作表單元格文件的共享字符串文件和配置文件;
對(duì)生成的上述各文件進(jìn)行壓縮,然后生成Excel格式的文件。
進(jìn)一步,工作表單元格文件是指Excel文件中的.xml文件。
進(jìn)一步,對(duì)數(shù)據(jù)采取邊讀取邊轉(zhuǎn)換的方式,生成工作表單元格文件,具體包括以下步驟:
對(duì)數(shù)據(jù)采取邊讀取邊轉(zhuǎn)換的方式,生成工作表單元格文件的頭部描述區(qū),并為無(wú)法填寫(xiě)的參數(shù)預(yù)留空白區(qū)域;
對(duì)數(shù)據(jù)采取邊讀取邊轉(zhuǎn)換的方式,生成工作表單元格文件的數(shù)據(jù)區(qū);
對(duì)數(shù)據(jù)采取邊讀取邊轉(zhuǎn)換的方式,生成工作表單元格文件的尾部公共區(qū);
采用隨機(jī)訪問(wèn)磁盤(pán)的方式,重新填寫(xiě)所述頭部描述區(qū)中沒(méi)有填寫(xiě)的參數(shù)。
進(jìn)一步,當(dāng)寫(xiě)入的數(shù)據(jù)為數(shù)字?jǐn)?shù)據(jù)時(shí),將該數(shù)字?jǐn)?shù)據(jù)寫(xiě)入工作表單元格文件對(duì)應(yīng)的單元格中。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中興通訊股份有限公司,未經(jīng)中興通訊股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110103611.5/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F17-00 特別適用于特定功能的數(shù)字計(jì)算設(shè)備或數(shù)據(jù)處理設(shè)備或數(shù)據(jù)處理方法
G06F17-10 .復(fù)雜數(shù)學(xué)運(yùn)算的
G06F17-20 .處理自然語(yǔ)言數(shù)據(jù)的
G06F17-30 .信息檢索;及其數(shù)據(jù)庫(kù)結(jié)構(gòu)
G06F17-40 .數(shù)據(jù)的獲取和記錄
G06F17-50 .計(jì)算機(jī)輔助設(shè)計(jì)
- 數(shù)據(jù)顯示系統(tǒng)、數(shù)據(jù)中繼設(shè)備、數(shù)據(jù)中繼方法、數(shù)據(jù)系統(tǒng)、接收設(shè)備和數(shù)據(jù)讀取方法
- 數(shù)據(jù)記錄方法、數(shù)據(jù)記錄裝置、數(shù)據(jù)記錄媒體、數(shù)據(jù)重播方法和數(shù)據(jù)重播裝置
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)發(fā)送系統(tǒng)、數(shù)據(jù)發(fā)送裝置以及數(shù)據(jù)結(jié)構(gòu)
- 數(shù)據(jù)顯示系統(tǒng)、數(shù)據(jù)中繼設(shè)備、數(shù)據(jù)中繼方法及數(shù)據(jù)系統(tǒng)
- 數(shù)據(jù)嵌入裝置、數(shù)據(jù)嵌入方法、數(shù)據(jù)提取裝置及數(shù)據(jù)提取方法
- 數(shù)據(jù)管理裝置、數(shù)據(jù)編輯裝置、數(shù)據(jù)閱覽裝置、數(shù)據(jù)管理方法、數(shù)據(jù)編輯方法以及數(shù)據(jù)閱覽方法
- 數(shù)據(jù)發(fā)送和數(shù)據(jù)接收設(shè)備、數(shù)據(jù)發(fā)送和數(shù)據(jù)接收方法
- 數(shù)據(jù)發(fā)送裝置、數(shù)據(jù)接收裝置、數(shù)據(jù)收發(fā)系統(tǒng)、數(shù)據(jù)發(fā)送方法、數(shù)據(jù)接收方法和數(shù)據(jù)收發(fā)方法
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)再現(xiàn)方法、數(shù)據(jù)發(fā)送裝置及數(shù)據(jù)再現(xiàn)裝置
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)再現(xiàn)方法、數(shù)據(jù)發(fā)送裝置及數(shù)據(jù)再現(xiàn)裝置
- 一種基于異步處理的大數(shù)據(jù)量Excel文件導(dǎo)出方法
- 一種數(shù)據(jù)EXCEL導(dǎo)入和導(dǎo)出的工具
- 一種Excel合并方法和系統(tǒng)
- 基于數(shù)據(jù)配置生成Excel表格和圖例的系統(tǒng)及方法
- 一種業(yè)務(wù)系統(tǒng)導(dǎo)入EXCEL數(shù)據(jù)的方法
- 一種Excel數(shù)據(jù)文件的處理方法及裝置
- 一種excel導(dǎo)入導(dǎo)出的實(shí)現(xiàn)方法及裝置
- Excel數(shù)據(jù)的導(dǎo)出方法及裝置、電子設(shè)備
- 一種大數(shù)據(jù)excel文件導(dǎo)入的系統(tǒng)及方法
- 腳本生成方法、裝置、計(jì)算機(jī)設(shè)備及存儲(chǔ)介質(zhì)





