关于网友提出的“java数据导出excel或其他文件格式,数据量大怎么优化?”问题疑问,本网通过在网上对“java数据导出excel或其他文件格式,数据量大怎么优化?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:java数据导出excel或其他文件格式,数据量大怎么优化?
描述:
java数据导出excel或其他文件格式,数据量大怎么优化?
现在5000条数据用15秒,这种太慢了,这只是测试数据,线上服务器数据至少5w条
求大神们给几个方案参考,谢谢
解决方案1:
用高性能的spread控件可以做到。你可以去下面下载Excel导出的示例代码哦。
http://gcdn.gcpowertools.com.cn/showtopic-21245-1-1.html
解决方案2:主要是读写磁盘耗时吧。先在内存划出一块空间,映射Excel文件;再往这块空间写数据,写满了就保存。
解决方案3:分页导出?先随机生成一个缓存Excel分页往这个缓存Excel里面写,导完再重命名。
解决方案4:不能一次性读取,最好的办法优化是用流读取,用流写入,这样节省内存,效率高,如果文件实在很大,那么建议分片写在磁盘上,等都写完了,在一起合并
解决方案5:导出CSV啊,不用excel
解决方案6:如果数据量很大,尽量不要在内存操作,可以直接在服务器上写文件,或者写多个文件,然后打包再下载。这个过程不一定要同步完成,如果确实很大,用户一般是可以接受的。
解决方案7:这个问题我还真碰到过,有一次公司让生成200w兑换码,我的内心几乎是崩溃的,因为首先生成是个问题(线上Mysql),下载兑换码也是个问题,最后的解决方案是我直接用navicat导出。因为很紧急,所以找了个快方法,现在想想,其实有很多方法可以实现,简单点就是可以并发写出n个文件,然后打个包。
解决方案8:
楼上正解,搞个100W数据放内存里,如果好多人一起生成excel,你的服务肯定崩。。。。
有个坏的点子:你可以写csv文件,写完后去掉字段前的空格,再更改扩展名。
解决方案9:
能否说下你的实现办法呢?
1、测试从数据库读取的耗时,优化SQL。
2、改善数据转换导出的算法,更换效率更高的类库。
解决方案10:
数据不能直接加载到内存,去掉ORM,使用JDBC操作游标,一行一行的读取写入
以上介绍了“java数据导出excel或其他文件格式,数据量大怎么优化?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1168387.html