一种将数据导出为Excel文件的方法及装置制造方法及图纸

技术编号:7935426 阅读:161 留言:0更新日期:2012-11-01 05:08
本发明专利技术公开了一种将数据导出为Excel文件的方法及装置,所述方法包括以下步骤:建立Excel的组件包目录结构;对数据采取边读取边转换的方式,生成工作表单元格文件;在所述组件包目录结构下,生成所述工作表单元格文件的共享字符串文件和配置文件;对生成的上述各文件进行压缩存,然后生成Excel格式的文件。本发明专利技术通过采用边读取边转换方式将数据导出成Excel文件,无需将大量对象保存在内存内,且内存不会随保存数据的增加而增加,极大的减少了对内存的占用。

【技术实现步骤摘要】

本专利技术涉及数据处理
,特别是涉及一种将数据导出为Excel文件的方法及装置
技术介绍
在当今这个以计算机作为最重要信息载体的时代,常常需要将批量数据导出成Microsoft Office Excel文件。目前,基于Java的主流开源导出组件有JavaExcelAPI (JXL)和 Ρ0Ι。JXL是一个成熟开源的Excel电子表格读取、修改、写入的项目。目前支持的最高版本是 Excel2003,它是基于 BIFF (Binary Interchange File Format, 二进制交换文件格式)格式的。此时,要生成一个Excel文件,必须事先知道Excel文件的大小及各工作表 (sheet)、单元格的偏移量等信息。因此,它在生成Excel文件时,JXL采取先将所有的数据放入内存中,等到程序关闭时,再计算Excel文件的大小,并生成Excel文件的所有信息,再一次写入到磁盘,形成Excel文件。这种方法当然简化了计算,但它需要对每一个单元格都生成相应对象,当有大批量数据时,会造成内存溢出。并且,打开一个Excel文件,它同样会将单元格读出生成对象,因此它也无法通过分批次导入数据来减小内存消耗。Jakarta POI是apache的子项目,它提供了一组操纵Windows文档的JavaAPI。对 Excel,目前提供 HSSF 和 XSSF 接口。HSSF (Horrible SpreadSheetFormat)生成后缀为xls(Excel997-2003)的文件,文件格式同样为 BIFF 8。XSSF (XML Spreadsheet Format)生成后缀为 xlsx(Excel2007)的文件,它读写 Off ice Open XML (00XML,基于 XML-extensibleMarkup Language语言的数据储存语言为Microsoft Off ice开发所制定的技术规范)格式文件。OfficeOpen XML是由微软公司为Off ice 2007产品开发的技术规范,是XML技术和ZIP技术的结合,现已成为国际文档格式标准。开发时,首先生成xml文件集(称为组件),再将文件打包成zip格式,最后重命名为xlsx后缀,就生成了我们常见的Excel2007文件了。虽然POI提供了读写00XML的接口,但在导出时,仍然将全部单元格cell对象存储于内存,大数据量时,仍然会造成内存溢出。为了实现大批量低内存的导出成Excel文件,现有技术中,专利申请号为CN200810057915.0的中国专利公开了一种将数据库中数据导出成Excel文件的装置及其方法,但该现有技术存在以下缺陷一、采用先生成数据主体文件,再重新修改BIFF (BinaryInterchange File Format)格式的方法,内存计算难度大,只要算错一位,可能导致生成的文件无法打开;二、同样是由于直接修改内存难度大、风险高的原因,进一步开发难度较大,很难进一步的支持样式设置等Excel其它常用功能;三、使用场景非常局限,只能针对像数据库这种格式规整、能计算或预知行列数的情况。
技术实现思路
本专利技术要解决的技术问题是提供一种将数据导出为Excel文件的方法及装置,用以解决现有技术中将数据导出为Excel文件时内存消耗大的问题。为解决上述技术问题,一方面,本专利技术提供一种将数据导出为Excel文件的方法,所述方法包括以下步骤建立Excel的组件包目录结构;在所述组件包目录结构下,对数据采取边读取边转换的方式,生成工作表单元格文件;生成所述工作表单元格文件的共享字符串文件和配置文件;对生成的上述各文件进行压缩,然后生成Excel格式的文件。进一步,工作表单元格文件是指Excel文件中的.xml文件。 进一步,对数据采取边读取边转换的方式,生成工作表单元格文件,具体包括以下步骤对数据采取边读取边转换的方式,生成工作表单元格文件的头部描述区,并为无法填写的参数预留空白区域;对数据采取边读取边转换的方式,生成工作表单元格文件的数据区;对数据采取边读取边转换的方式,生成工作表单元格文件的尾部公共区;采用随机访问磁盘的方式,重新填写所述头部描述区中没有填写的参数。进一步,当写入的数据为数字数据时,将该数字数据写入工作表单元格文件对应的单元格中。进一步,当写入的数据为字符串数据时,在工作表单元格文件中指明该字符串数据在共享字符串文件中保存的序号,并将该字符串数据写入共享字符串文件中。进一步,生成共享字符串文件,具体包括以下步骤当有需要写入的字符串数据时,将该字符串数据在内存中进行保存;当内存中保存的字符串数据的个数达到预先设定的最大值时,将内存中的字符串数据写入磁盘,生成共享字符串文件,并清空所述内存。另一方面,本专利技术还提供一种将数据导出为Excel文件的装置,所述装置包括组件包目录结构建立单元,用于建立Excel的组件包目录结构;工作表单元格文件生成单元,用于在所述组件包目录结构下,对数据采取边读取边转换的方式,生成工作表单元格文件;剩余文件生成单元,用于生成所述工作表单元格文件的共享字符串文件和配置文件;Excel文件生成单元,用于对生成的上述各文件进行压缩,然后生成Excel格式的文件。进一步,工作表单元格文件是指Excel文件中的.xml文件。进一步,所述工作表单元格文件生成单元进一步包括头部描述区生成子单元,用于对数据采取边读取边转换的方式,生成工作表单元格文件的头部描述区,并为无法填写的参数预留空白区域;数据区生成子单元,用于对数据采取边读取边转换的方式,生成工作表单元格文件的数据区;尾部公共区生成子单元,用于对数据采取边读取边转换的方式,生成工作表单元格文件的尾部公共区;参数重填子单元,用于采用随机访问磁盘的方式,重新填写所述头部描述区中没有填写的参数。进一步,所述装置还包括 数字数据写入单元,用于当写入的数据为数字数据时,将该数字数据写入工作表单元格文件对应的单元格中。进一步,所述装置还包括 字符串数据写入单元,用于当写入的数据为字符串数据时,在工作表单元格文件中指明该字符串数据在共享字符串文件中保存的序号,将该字符串数据写入共享字符串文件中。进一步,所述剩余文件生成单元进一步包括字符串数据保存子单元,用于当有需要写入的字符串数据时,将该字符串数据在内存中进行保存;共享字符串文件生成子单元,用于当内存中保存的字符串数据的个数达到预先设定的最大值时,将内存中的字符串数据写入磁盘,生成共享字符串文件,并清空所述内存。本专利技术有益效果如下本专利技术通过采用边读取边转换方式将数据导出成Excel文件,无需将大量对象保存在内存内,且内存不会随保存数据的增加而增加,极大的减少了对内存的占用。附图说明图I是本专利技术实施例中一种将数据导出为Excel文件的方法的流程图;图2是本专利技术实施例中一种生成工作表单元格文件的流程图;图3是本专利技术实施例中一种生成共享字符串文件的流程图;图4是本专利技术实施例中又一种将数据导出为Excel文件的方法的流程图;图5是本专利技术实施例中一种将数据导出为Excel文件的装置的结构示意图;图6是本专利技术实施例中又一种将数据导出为Excel文件的装置的结构示意图。具体实施例方式为了解决现有技术中将数据导出为Exce本文档来自技高网
...

【技术保护点】
一种将数据导出为Excel文件的方法,其特征在于,所述方法包括以下步骤:建立Excel的组件包目录结构;在所述组件包目录结构下,对数据采取边读取边转换的方式,生成工作表单元格文件;生成所述工作表单元格文件的共享字符串文件和配置文件;对生成的上述各文件进行压缩,然后生成Excel格式的文件。

【技术特征摘要】

【专利技术属性】
技术研发人员:范登华
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1