前些天做了一个EXCEL数据下载的东西,发现当数据超过10万行之后,就会内存溢出(用的是本机TOMCAT测试,内存有限,没能调过),新做一种方式,来感觉一下,发现速度有点慢,其他还可以.
一、问题描述
该问题出现是因为在导出文件之后
用户下载的是
.csv
文件,如果用文本编辑器打开可以查看所有记录,但是如果用
excel
打开就出现一个
sheet
最多
6
万条的记录。因此就不可以使用保存为
csv
文件来实现
excel
文件的下载,需要使用新的方式去实现。
如果使用
jxl
开发包在
web
后台去创建
Excel
文件,如果数据量比较大,则用户需要等待很长很长的时间才可以下载到,因为
jxl
的对于
excel
文件的操作都是对象级的
,
文件中每一个格子都是一个
cell
对象,需要后台去
new
。所以还需要考虑别的方式。
二、实现灵感
Excel
文件打开之后选择另存为可以保存为
XML
类型文件,因此就考虑构造符合
Excel
可以打开的
XML
类型文件,并且对该
XML
文件进行最简单化处理,去除
Excel
文件中的每个
cell
的
style
定义、
XML
文件头部的多余信息,最后整理出一个符合资讯平台所下载的
Excel
文件的格式
,
请看下面:
文件头部
--//>
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
文件第一个
SHEET --//>
aa0
aa1
aa2
aa0
aa1
aa2
文件第二个
SHEET --//>
一行数据
--//>
aa0
aa1
aa2
aa0
aa1
aa2