首先有个JAVA老程序,查询大约十万条数据导出xls文件,由于xls文件最大是65536行,所以会生成二个工作表Sheet,用户觉得不方便。希望生成Excel 2010版,就是xlsx格式的文件。
1、网上找了一下,java生成xls评论最好的是apache poi,发现系统已用,但是旧版本,并且无法替换。后来想到了一个办法,找到poi的源码,改了一下路径 ,例如org.apache.poi.xssf.usermodel.XSSFCell; 改为org.apache.poi.xssf.skg.usermodel.XSSFCell; 然后生成一个jar来调来,但是效果不好,太慢,数据达到三万条左右,服务器都快死。
2、分析过xlsx文件,它是一个ZIP文件,里面是xml文件。所以就想直接生成xml文件,再压缩成ZIP文件。但经过几次尝试,会出现数字类型有问题,还有经常会有异常,生成的文件打不开。
3、想通过excel的数据来源,直接用sql查询出来,但这个要在用户电脑上安装数据库的客户端,后来就放弃了
4、通过excel打开文件框里面的文件类型,一个一个的测试,发现dif类型支持超过7万,并且它本身是文件格式。然后找相关的资料,找到了JavaDIF。分析它,它是通过建立对象来生成的,但数据量太大时,会内存溢出。由于我不需要修改文件,就直接生成文本格式的方式,生成dif文件。
代码在CreateDifFile方法,需要修改一下
https://pan.baidu.com/s/1jIhyWpo