I think POI is using too much memory! What can I do?This one comes up quite a lot, but often the reason isn't what you might initially think. So, the first thing to check is - what's the source of the problem? Your file? Your code? Your environment? Or Apache POI?

Next, use the example program ToCSV to try reading the a file in with HSSF or XSSF. Related is XLSX2CSV, which uses SAX parsing for .xlsx

我们看到了POI已经提出了针对这个问题的回答,而且正好在XLS2CSV中找到了很好的解决读取大容量的方法.

在XLS2CSV中,即使是读取300M的2007excel文件也没有什么问题,占用的内存也是可以接受的。在这段代码中的注释中写出了下面一段话:

*Data sheets are read using a SAX parser to keep thememory footprint relatively small, so this should be

able to read enormous workbooks. The styles table and

the shared-string table must be kept in memory. The

standard POI styles table class is used, but a custom

(read-only) class is used for the shared string table

because the standard POI SharedStringsTable grows

very quickly with the number of unique strings.

大概的意思就是说通用的处理方法会快速消耗掉内存,所以采用了 SAX parser方法来处理大容量的文件.public void processSheet(

StylesTable styles,

ReadOnlySharedStringsTable strings,

InputStream sheetInputStream)

throws IOException, ParserConfigurationException, SAXException {

InputSource sheetSource = new InputSource(sheetInputStream);

SAXParserFactory saxFactory = SAXParserFactory.newInstance();

SAXParser saxParser = saxFactory.newSAXParser();

XMLReader sheetParser = saxParser.getXMLReader();

ContentHandler handler = new MyXSSFSheetHandler(styles, strings, this.minColumns, this.output);

sheetParser.setContentHandler(handler);

sheetParser.parse(sheetSource);

}上面的一段代码是比较核心的代码,通过SAXParser解析xml文件,尽量不占用内存资源,从而达到读取大文件的目的。

poi的sax模式读取xls_POI SAX 如何修改大excel 文件内容-问答-阿里云开发者社区-阿里云...相关推荐

  1. 配置phoenix连接hbase_Phoenix4.14不读取hbase配置文件-问答-阿里云开发者社区-阿里云...

    cdh集群是新装的 Phoenix 4.14也是新装的 Phoenix可以建表, 可以批量导数 但就是不能建二级索引 在CM上配置如下: hbase-site.xml 的 HBase 客户端高级配置代 ...

  2. python路径分隔符_Python:当读取一个没有默认分隔符的文件(包含数百万条记录)并将其放入dataframe (pa-问答-阿里云开发者社区-阿里云...

    Python:在没有默认分隔符(包含数百万条记录)的情况下读取文件并将其放入"数据框架(panda)"中,最有效的方法是什么? 文件是:"file_sd.txt" ...

  3. 使用POI读取excel文件内容

    1.前言 项目中要求读取excel文件内容,并将其转化为xml格式.常见读取excel文档一般使用POI和JExcelAPI这两个工具.这里我们介绍使用POI实现读取excel文档. 2.代码实例: ...

  4. Java 读取excel文件内容插入到数据库

    Java读写Excel的包是Apache POI. JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel ...

  5. R—读取数据(导入csv,txt,excel文件)

    R-读取数据(导入csv,txt,excel文件) 转自:http://www.cnblogs.com/zhangduo/p/4440314.html 导入CSV.TXT文件 read.table函数 ...

  6. java中excel文件内容读取

    如果使用的maven项目,导入excel文件内容的时候需要引入以下依赖 <dependency>     <groupId>org.apache.poi</groupId ...

  7. Python使用pandas读取两个或者多个excel文件(xlsx)并进行数据连接(join)合并两个或者多个excel的信息

    Python使用pandas读取两个或者多个excel文件(xlsx)并进行数据连接(join)合并两个或者多个excel的信息 目录

  8. 32. Pandas借助Python爬虫读取HTML网页表格存储到Excel文件

    Pandas借助Python爬虫读取HTML网页表格存储到Excel文件 实现目标: 网易有道词典可以用于英语单词查询,可以将查询的单词加入到单词本; 当前没有导出全部单词列表的功能.为了复习方便,可 ...

  9. 通用读取Excel文件内容的模板设计

    Excel格式文件是最为常用的文件之一,在我们开发的软件中,一般需要把一些报表或表格导出为Excel格式文件,也需要读取Excel格式文件中表格数据.因此,Excel格式文件也成为不同软件间数据交换的 ...

最新文章

  1. NO7 利用三剑客awk-grep-sed-head-tail等7种方法实践
  2. java三目运算符判断boonlean,java三元运算符
  3. .NET Core 3.0 即将结束生命周期,建议迁移 3.1
  4. linux之如何快速查看文件的大小
  5. java 谓词_谓词::不适合Java
  6. setcellvalue 格式_POI对Excel单元格的格式的设置参数
  7. 接口定义【领域对象】
  8. 57-Insert Interval
  9. 安装天文软件karma和设置环境变量---conda安装和环境变量设置
  10. Hibernate教程——史上最全面的项目和教程集合
  11. gradle下载慢的解决方案
  12. 苹果手机手机用数据线连接苹果电脑时为何会一直断开无法连接
  13. jxd android 4.1刷机包,金星JXD V3固件
  14. [数图] 实验四 图像的滤波处理与图像空间变换
  15. android 生成bks_android双向认证(自签名证书) bks的生成方法
  16. php实现图片的翻滚,css实现图片滚动 - 我是希希呀的个人空间 - OSCHINA - 中文开源技术交流社区...
  17. 《利用Python进行数据分析》第一个案例
  18. 安装问题:bokeh安装报错
  19. 以数据为中心的路由协议_如何将电信机房改造为适合5G发展的数据中心?
  20. ns2 安装与问题集锦

热门文章

  1. Shell—grep、sed、awk
  2. 关于找工作和选专业的思考
  3. QT事件过滤器eventFilter函数
  4. 一文读懂类加载机制 --- ClassLoader
  5. C++学习之路 | PTA乙级—— 1026 程序运行时间(精简)
  6. java调用三汇语音卡,三汇语音卡
  7. axi时序图_深入 AXI4总线(E3)实战:制作一个 AXI 接口 IP
  8. 冷藏温度范围_食品冷藏冷冻温度要求与管理规范
  9. 计算机组装没步的组件,计算机组装教案.doc
  10. java 双重检查锁 有序_Java中的双重检查锁(double checked locking)