如何提高poi读写excel文件(同一文件)的效率

西兰花炒椰菜花 2015-06-18 11:35:05
现在有一个100万行的excel文件需要处理并且生成一个新的excel文件,我试过读写5万行要1分以上,100万就不用试了,现在要求10分钟以内处理100万行数据,希望各位大神给点提示
...全文
1257 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_33644773 2018-02-24
  • 打赏
  • 举报
回复
用最新版的API,通过事件驱动的模式,构造XML,写Excel2007。参考链接http://blog.csdn.net/jinshuaiwang/article/details/15499685直接拉到后面,就是写Excel的。 这个链接打不开?你这个怎么处理的?
  • 打赏
  • 举报
回复
现在又有另外一个问题。 现在要将数据弄进oracle数据库,用PreparedStatement的addBatch方法,每五万条导入一次,每5千条提交一次,但效率很低,我导入5万条数据要2分钟。如果改成1万条数据提交一次效率更低,请问有没有其他更高效率导入数据库的方法
空心兜兜 2015-06-30
  • 打赏
  • 举报
回复
这个貌似快不了吧
cjh_tostring 2015-06-30
  • 打赏
  • 举报
回复
引用 10 楼 freedomqaz2008 的回复:
[quote=引用 9 楼 jc890904 的回复:] 用最新版的API,通过事件驱动的模式,构造XML,写Excel2007。参考链接http://blog.csdn.net/jinshuaiwang/article/details/15499685直接拉到后面,就是写Excel的。
真是十分感谢!!! 我试过只是单纯的读写100W条数据用不了半分钟[/quote] 既然读写很快,那么就把读写和处理分开,将读取的数据放入队列,然后多线程去处理,再放入队列,再写到excel。
  • 打赏
  • 举报
回复
引用 9 楼 jc890904 的回复:
用最新版的API,通过事件驱动的模式,构造XML,写Excel2007。参考链接http://blog.csdn.net/jinshuaiwang/article/details/15499685直接拉到后面,就是写Excel的。
真是十分感谢!!! 我试过只是单纯的读写100W条数据用不了半分钟
傻傻de点点 2015-06-25
  • 打赏
  • 举报
回复
用最新版的API,通过事件驱动的模式,构造XML,写Excel2007。参考链接http://blog.csdn.net/jinshuaiwang/article/details/15499685直接拉到后面,就是写Excel的。
  • 打赏
  • 举报
回复
我也试过用多线程,但每次写入的是同一sheet,所以要先用inputstream读取表格和行数再接着写入,如果启动多线程写入会报错(可能是写入要同时读和写),不知道为什么
疯狂熊猫人 2015-06-21
  • 打赏
  • 举报
回复
考虑使用多线程。通过一个分配算法,生成不同的处理区间段,然后每个区间启动一个线程去处理。 另外,不知道业务处理逻辑是否复杂,也不知道你的代码实现,不好做进一步设计
  • 打赏
  • 举报
回复
引用 5 楼 tianfang 的回复:
是不是可以存为csv文件 然后自己读取行数据,用逗号分隔拆字符串数组
我试过将excel转为csv后进行处理,后再转为excel,效率差不多;因为excel转csv还是一个一个单元格读,再转为excel也是一个一个单元格写,也是用输入输出流操作,效率还是一样
  • 打赏
  • 举报
回复
引用 1 楼 zn85600301 的回复:
excel 一个sheet 只能有2W多行数据吧,这么多数据都在一个sheet里面吗?

就是在一个sheet里
zn85600301 2015-06-18
  • 打赏
  • 举报
回复
excel 一个sheet 只能有2W多行数据吧,这么多数据都在一个sheet里面吗?
tianfang 2015-06-18
  • 打赏
  • 举报
回复
是不是可以存为csv文件 然后自己读取行数据,用逗号分隔拆字符串数组
Bill_Anny 2015-06-18
  • 打赏
  • 举报
回复
100W数据放在一个SHEET里? 这里是不是应该考虑一下,是否真要这么设计。 100W数据的文件,EXCEL能打开吗? 即使能打开,谁又会查看100W数据量的数据呢?
  • 打赏
  • 举报
回复
要说明一下,要生成的excel文件也是一个文件一个sheet,所以生成文件比较麻烦,每次循环(5万条数据)都要先读再写,效率很低

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧