使用poi读excel可否分段读,读取100万条数据

sinat_35539375 2016-07-14 03:19:42
有源码的贴下源码 谢谢!!
...全文
2515 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
m0_37532469 2017-04-25
  • 打赏
  • 举报
回复
为什么十万条就内存溢出了
懵逼中敲代码 2017-02-24
  • 打赏
  • 举报
回复
引用 10 楼 tatakautsubasa 的回复:
[quote=引用 9 楼 sinat_35539375 的回复:] [quote=引用 8 楼 tatakautsubasa 的回复:] POI里面有两种模式,一种是平时使用的,将excel完全读入内存再解析;还有一种是通过流的方式读入excel,只占很小的内存,速度快,适合读大文件,但是该模式不能修改excel,只能读取。源代码贴不出来,楼主自行网上查吧。因为我当时的项目是读大文件还得修改,这种模式不能满足,所以没使用该模式。我们当时是用的POI和dom4j结合使用,因为07以上的excel是xml的,03的excel可以转成07,这样就可以用dom4j的filter来读取excel,并且也是用流,占内存小速度快。
你说的那个是事件驱动模式吗?百度过,事件驱动和SAX是不是同一种方法?[/quote] 是的[/quote]sax解析 能获取出excel里的Sheet页名称么。
qq_35203897 2016-11-08
  • 打赏
  • 举报
回复
引用 6 楼 beijing20110905 的回复:
直接通过行数计算,分批处理。 //获取总行数 //int rowNum=hssfSheet.getLastRowNum(); //获取一个excel表格中的总记录数 int rowNum=storagesList.size(); //获取总列数 int columnNum=hssfRow.getPhysicalNumberOfCells();
可以详细点吗
qq_35203897 2016-11-08
  • 打赏
  • 举报
回复
楼主,解决了吗?求方法
马QQQ 2016-07-18
  • 打赏
  • 举报
回复
引用 4 楼 wzymmzs 的回复:
大神,你知道ppt里怎么创建line吗?我用Line line = new Line();会出错

new Line();的括号里面好像是要传参数的吧?以下是源码
public Line(int x1, int y1, int x2, int y2) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
}
tatakautsubasa 2016-07-18
  • 打赏
  • 举报
回复
引用 9 楼 sinat_35539375 的回复:
[quote=引用 8 楼 tatakautsubasa 的回复:] POI里面有两种模式,一种是平时使用的,将excel完全读入内存再解析;还有一种是通过流的方式读入excel,只占很小的内存,速度快,适合读大文件,但是该模式不能修改excel,只能读取。源代码贴不出来,楼主自行网上查吧。因为我当时的项目是读大文件还得修改,这种模式不能满足,所以没使用该模式。我们当时是用的POI和dom4j结合使用,因为07以上的excel是xml的,03的excel可以转成07,这样就可以用dom4j的filter来读取excel,并且也是用流,占内存小速度快。
你说的那个是事件驱动模式吗?百度过,事件驱动和SAX是不是同一种方法?[/quote] 是的
sinat_35539375 2016-07-18
  • 打赏
  • 举报
回复
引用 8 楼 tatakautsubasa 的回复:
POI里面有两种模式,一种是平时使用的,将excel完全读入内存再解析;还有一种是通过流的方式读入excel,只占很小的内存,速度快,适合读大文件,但是该模式不能修改excel,只能读取。源代码贴不出来,楼主自行网上查吧。因为我当时的项目是读大文件还得修改,这种模式不能满足,所以没使用该模式。我们当时是用的POI和dom4j结合使用,因为07以上的excel是xml的,03的excel可以转成07,这样就可以用dom4j的filter来读取excel,并且也是用流,占内存小速度快。
你说的那个是事件驱动模式吗?百度过,事件驱动和SAX是不是同一种方法?
tatakautsubasa 2016-07-18
  • 打赏
  • 举报
回复
POI里面有两种模式,一种是平时使用的,将excel完全读入内存再解析;还有一种是通过流的方式读入excel,只占很小的内存,速度快,适合读大文件,但是该模式不能修改excel,只能读取。源代码贴不出来,楼主自行网上查吧。因为我当时的项目是读大文件还得修改,这种模式不能满足,所以没使用该模式。我们当时是用的POI和dom4j结合使用,因为07以上的excel是xml的,03的excel可以转成07,这样就可以用dom4j的filter来读取excel,并且也是用流,占内存小速度快。
CatWitch 2016-07-18
  • 打赏
  • 举报
回复
我之前做过,35万条就快不行了
  • 打赏
  • 举报
回复
直接通过行数计算,分批处理。 //获取总行数 //int rowNum=hssfSheet.getLastRowNum(); //获取一个excel表格中的总记录数 int rowNum=storagesList.size(); //获取总列数 int columnNum=hssfRow.getPhysicalNumberOfCells();
wzymmzs 2016-07-17
  • 打赏
  • 举报
回复
大神,你知道ppt里怎么创建line吗?我用Line line = new Line();会出错
Intboy 2016-07-15
  • 打赏
  • 举报
回复
引用 2 楼 sinat_35539375 的回复:
[quote=引用 1 楼 fengspg 的回复:] Excel单个sheet页最大貌似是65535。当然,可以分多个sheet页的话;这么大数据,会不会撑爆内存
07版一个sheet可以存100万条,就是问有没有方法解决内存溢出[/quote] 这么牛逼, 内存问题好像可以通过副本还是什么的解决,可以谷歌搜搜
sinat_35539375 2016-07-14
  • 打赏
  • 举报
回复
引用 1 楼 fengspg 的回复:
Excel单个sheet页最大貌似是65535。当然,可以分多个sheet页的话;这么大数据,会不会撑爆内存
07版一个sheet可以存100万条,就是问有没有方法解决内存溢出
Intboy 2016-07-14
  • 打赏
  • 举报
回复
Excel单个sheet页最大貌似是65535。当然,可以分多个sheet页的话;这么大数据,会不会撑爆内存

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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