求java解析excel大文件的解决方案

发布于 2021-12-07 07:08:41 字数 677 浏览 724 评论 5

一个excel有5/6个sheel,sheet多的大概有3万条数据以上,整个文件15M左右。

文件可能是.xls或xlsx文件。

需求:解析每个sheet进行入库,最好能精确获取到某一行某一列的值,这样可以配置每一列对应的是哪个字段。

问题:使用poi普通的读取占用年内存大,且溢出,方式如下:

if (isE2007)
                wb = new XSSFWorkbook(input);
            else
                wb = new HSSFWorkbook(input);

这种方法是整个文件读取,容易内存溢出,已加内存,还是会溢出,存在较大的风险,而且效率非常慢。

另网上另一种方法,是转为csv,一行一行的读取,继承DefaultHandler。这个方法效率是挺快的,但是经过测试不支持xls的文件。

请问有大神有使用什么好的插件或demo推荐吗?首次接触解析excle不太了解,求指点下思路,感激不尽!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

反目相谮 2021-12-08 15:42:57

帮顶!
大数据情况下,直接使用SpreadJS这种类Excel控件非常方便,节约开发成本。Excel里面的功能基本都支持啦,还不用写太多代码。淘宝、华为数据量很大也在用,你去试试:
http://www.grapecity.com.cn/developer/spreadjs

 

滥情空心 2021-12-08 12:01:03

可以分多个线程,一个线程解析一个sheet,采用基于事件的模型来读取。

千笙结 2021-12-08 11:49:07

另一个模式叫事件模式,估计是面向事件性、不完全解析的模式吧,要不怎么省内存呢。

多情癖 2021-12-08 10:35:21

之前在OSC博客看过一篇文章,也是将如何解析 Excel 大文件的,记得好像是说POI有两种模式的API,用户模式占用的内存太大(即楼主用的),另一个忘了是什么模式了,占用内存小性能高但是对编程难度稍高、API没那么友好。

博文是:https://my.oschina.net/OutOfMemory/blog/1068972

哈哈,楼主换一个模式的 API 实现吧。

北笙凉宸 2021-12-08 03:45:09

加内存

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文