项目中遇到数据导入、导出用excle操作的问题,数据量在W级别,因03版有6W+的限制,系统统一采用07版excel来做,采用POI进行处理,在导入、导出的时候都遇到的内存溢出的问题,导入方面主要参考下面的文章处理

http://blog.csdn.net/lishengbo/article/details/40711769(感谢作者分享)

导出部分采用官方提供的例子,采用SXSSFWorkbook进行导出。可参考以下文章:

http://blog.csdn.net/wangweiyan89/article/details/8863975

单独做这两部分功能都能解决内存溢出的问题,那么问题来了,系统中存在一种操作,需要将导出的文件再次进行导入,这里就是用SXSSFWorkbook导出的文件在采用SAX解析的方式进行读取,这时出现读不到数据的情况,前一步生成的excel可以正常打开查看,但无法通过程序再次读取,考虑过网络下载文件存在保护视图的等权限的问题,但读的权限是可以的,换思路。。。奇怪的是excel文件打开后,随便点击哪里,不进行修改,再关闭的时候就提示需要保存修改,保存修改后在次用程序读取就可以正常读取数据了。考虑是不是写文件的时候出现差错,用官方提供的最简单例子进行读取,发现同样问题。。。。

看到excel文件改变后缀为zip之后,可以看到文件中xml格式内容,比较保存修改前后文件,发现其差距很大,从目录结构到xml文件结构都有很大差距。这条路也没有走通。。。

最后还是在解析上查看问题,在采用sax方式解析excel时,断点跟解析过程,发现保存修改前后文件在解析过程中的区别,其实和之前xml格式差别的思路相同,两者在具体到单元格内容部分存在组织结构上的差异,在本文开始提到的导入excel部分对代码进行细微调整即可解决。文件差异如下:左右分别为可读xml和不可读xml文件结构

不可读xml实际的数据内容在上级目录的sharedStrings.xml文件中。简单看这些还没有思路解决问题,断点调试的过程中针对读取过程中该部分进行了修改XLSXCovertCSVReader类中startElement和endElement方法中原有的"v".equals(name)判断,增加 || "t".equals(name)支持,测试通过,正常读取两个文件中数据,从结果看是解决了遇到的问题,但具体原因还是不太明白,先记下,如果哪位大神能指点一二,不胜感激。

java 读取excel2007 内存不足_POI处理excel2007内存溢出问题相关推荐

  1. java读取Excel2003和Excel2007内容

    java读取Excel2003和Excel2007内容并可以控制是否读取全部sheet页内容 在http://download.csdn.net/detail/u010792467/8072015下载 ...

  2. java 读取内存地址结构体_Java并发系列之volatile

    讲到Java并发,多线程编程,一定避免不了对关键字volatile的了解,那么如何来认识volatile,从哪些方面来了解它会比较合适呢?个人认为,既然是多线程编程,那我们在平常的学习中,工作中,大部 ...

  3. java读取sheet2_java读取Excel指定sheet页或全部sheet页数据(含2003和2007版本)

    java读取Excel指定sheet页或全部sheet页数据(含2003和2007版本) 在http://download.csdn.net/detail/u010792467/8072015下载所需 ...

  4. java读取Excel 错误 jxl read biff BiffException Unable to recog

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! java ...

  5. java读取本地文件_java 读取本地文件实例详解

    java 读取本地文件实例详解 用javax.xml.w3c解析 实例代码: package cn.com.xinli.monitor.utils; import org.w3c.dom.Docume ...

  6. java 读取css文件_java文件读取的两种方式

    JAVA中读取文件(二进制,字符)内容的几种方 JAVA中读取文件内容的方法有很多,比如按字节读取文件内容,按字符读取文件内容,按行读取文件内容,随机读取文件内容等方法,本文就以上方法的具体实现给出代 ...

  7. 【Java文件操作(六)】借助内存复制图片:ByteArrayOutputStream\ByteArrayInputStream\FileOutputStream\FileInputStream辨析

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

  8. java读取TXT文件的方法

    java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...

  9. java最大内存_JAVA:测试java虚拟机支持的最大内存 Xmx 值?Tomcat 内存溢出?

    如下命令,即可测试:不断调整n的值,windows上32位的1.6x为: 1610m java -Xmx1610M -version java -Xmx1610m -version 网摘的tomcat ...

最新文章

  1. 问问题要量化,要具体
  2. windows安装MongoDB进度条卡住,window安装mongo系统错误 2,系统错误5的解决办法(转载)...
  3. java.lang.NullPointerException 空指针异常问题
  4. Easy problem
  5. linux 禁ping设置
  6. 安装oracle配置监听出错,安装失败,无法建立监听?
  7. matlab源代码 语义相似度计算,如何计算两个句子之间的相似度(句法和语义)...
  8. rocket mq 监听端口_浅谈业务流程中的mq使用方式
  9. Java笔记-Semaphore简单应用实例
  10. Telerik for AJAX RadGrid控件
  11. 使用js事件绑定要调用函数的的三种方式
  12. html输入框素材,html文本框代码
  13. 最新bilibili怎么下载视频
  14. 2023年全国最新工会考试精选真题及答案36
  15. 微机原理-基本认识实验
  16. 解决kindeditor编辑器因为flash机制导致的图片批量上传按钮看不见的问题
  17. vue+element-tiptap
  18. 基于FPGA设计的音乐播放器
  19. sqlserver 截取字符串中的汉字
  20. 你最擅长的领域是什么

热门文章

  1. 固态硬盘与普通硬盘区别
  2. Mac 安装Git
  3. 书生中学计算机应用自费,浙江省台州市书生中学2015-2016学年高二信息技术上学期期中试题...
  4. 软件测试师具备的素质_软件测试工程师的素质
  5. 我正在互站卖源码的日子●续
  6. 初学AI---一个小实验练练手儿
  7. windows下安装memcache并为php开启memcache扩展
  8. 【边缘设备】基于RK3399核心板的nanoPC-T4 线刷桌面版系统
  9. 微信小程序优购商城项目分析
  10. ibm tivoli_Tivoli目录服务器