[发明专利]数据导出方法和装置有效
申请号: | 201410768466.6 | 申请日: | 2014-12-12 |
公开(公告)号: | CN105740293B | 公开(公告)日: | 2019-07-23 |
发明(设计)人: | 李佳 | 申请(专利权)人: | 金蝶软件(中国)有限公司 |
主分类号: | G06F3/06 | 分类号: | G06F3/06;G06F9/50 |
代理公司: | 广州华进联合专利商标代理有限公司 44224 | 代理人: | 何平 |
地址: | 518000 广东省深圳市南山区*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据 导出 方法 装置 | ||
本发明提供了一种数据导出方法,所述方法包括:接收数据导出请求;从预设的数据包装器中获取数据分块大小,根据所述数据分块大小将对应的数据分块输出到预先创建的缓冲区中;当缓冲区填满时将缓冲区中的数据分块输出到磁盘中,并清空所述缓冲区;当数据分块输出完毕,合并输出的数据分块。采用该方法,可以降低内存占用率。此外,还提供了一种数据导出装置。
技术领域
本发明涉及计算机技术领域,特别是涉及一种数据导出方法和装置。
背景技术
在很多软件应用中,都有将其中大量数据导出形成文件存储在本地的需求。比如,某些软件通过控件展示二维数据,控件是指用户可视的界面元素,例如按钮、选择框等。所述二维数据是指以行列形式组成的数据结构,例如数据库中的表。二维数据以单元格为数据存储单元,其上关联了存储样式,比如单元格的字体、字号、颜色、背景等可视化内容的数据结构。在很多应用场景下,都需要将展示的二维数据导出成表格文件存储到本地中。
传统技术中,将二维数据导出时会将需要导出的全部数据获取一遍,转换为内存中间模型,该内存中间模型用来缓存全部二维数据。接着再将该内存中间模型转换为第三方POI需要的内存模型,POI是一个第三方采用GPL协议的开源软件,该软件定义了一套数据标准,采用该标准的数据可通过该软件转换为Excel数据格式。再通过POI的相关接口,将数据输出到磁盘中。
然而,传统的这种数据导出方法在导出的过程中会生成多个数据模型,虽然在展示二维数据的控件使用虚模式进行数据加载的情况下可以减少部分内存占用,但是如果展示二维数据的控件使用实模式进行数据加载,则不能减少内存占用。其中虚模式是指展示二维数据的控件加载数据时只会记载用户查看的数据同时回收不查看数据占用的内容,而实模式是指展示二维数据的控件加载数据时会加载需要查看的全部数据。另外,传统的这种数据导出方法由于多个数据模型的存在,也会导致内存占用率高。
发明内容
基于此,有必要针对上述技术问题,提供一种能降低内存占用率的数据导出方法和装置。
一种数据导出方法,所述方法包括:
接收数据导出请求;
从预设的数据包装器中获取数据分块大小,根据所述数据分块大小将对应的数据分块输出到预先创建的缓冲区中;
当缓冲区填满时将缓冲区中的数据分块输出到磁盘中,并清空所述缓冲区;
当数据分块输出完毕,合并输出的数据分块。
在其中一个实施例中,所述从预设的数据包装器中获取数据分块大小,根据所述数据分块大小将对应的数据分块输出到预先创建的缓冲区中的步骤包括:
向所述数据包装器查询是否还有未输出的数据分块,若是,则从所述数据包装器获取数据属性信息和数据内容,将所述数据属性信息和数据内容输出到所述缓冲区中,否则,进入所述数据分块输出完毕,合并输出的数据分块的步骤。
在其中一个实施例中,所述数据为二维数据;所述从预设的数据包装器中获取数据分块大小,根据所述数据分块大小将对应的数据分块输出到预先创建的缓冲区中的步骤包括:
向所述数据包装器查询是否还有未输出的数据行,若是,则将所述数据行中的单元格的内容和属性信息输出到所述缓冲区中,进一步向所述数据包装器查询是否还有未输出的单元格,若是,则继续将单元格的内容和属性信息到缓冲区中,否则进入当缓冲区填满时将缓冲区中的数据分块输出到磁盘中,并清空所述缓冲区的步骤;
当查询到没有未输出的数据行时,进入当数据分块输出完毕,合并输出的数据分块的步骤。
在其中一个实施例中,所述缓冲区的大小与所述数据分块大小相同。
在其中一个实施例中,所述合并输出的数据分块的步骤包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于金蝶软件(中国)有限公司,未经金蝶软件(中国)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410768466.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:两段加氢生产白色微晶蜡的方法
- 下一篇:一种解码方法及装置
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置