当前位置: 首页 > 知识库问答 >
问题:

在Android上使用Apache poi读取xls时内存不足[重复]

许鸿志
2023-03-14

我正在尝试为android创建一个非常基本的电子表格(XLS)查看器。使用Apache poi API时,我在创建新的XSSFWorkbook对象时出现内存不足错误:

mWorkBook = new XSSFWorkbook(file);

如何获取中的特定行/单元格。xls而不将整个文件加载到内存中?

共有1个答案

程淮晨
2023-03-14

电子表格不适合随机访问。电子表格不是为此目的而设计的原因是因为单元格可以任意长,行中可以有任意数量的单元格。如果不是这样,并且每行都有固定的字节大小,那么您可以简单地跳过读取文件的第一个(ROWSIZE*INDEXOFROW)字节。

如果随机访问是您的主要用例,我建议将数据加载到一个小型数据库中。看看H2。

 类似资料:
  • 我正在写一个程序,它需要从excel文件中读取和写入数据,而不考虑格式(xls或xlsx)。 我知道ApachePOI,但它似乎有不同的类来处理xls文件(HSSF)和xlsx(XSSF)文件。 任何人都知道我将如何实现我在这里的目标。(也欢迎使用POI以外的API的想法)。

  • 我实现了firebasegoogle(com.google.firebase:firebaseauth:9.0.2),但是当我调用 我收到一条消息,内存不足。我是初学者,我不知道原因。如何解决这个问题?这是日志:

  • 问题内容: 编译Android项目时如何解决? 升级到Android Studio版本1后,我得到了这个。但是,我不认为这是问题所在。当我开始将应用程序升级到SDK 21之前(这是在SDK 20之前)的可能性最大。但是我也不是很确定。 我在Google周围搜索了一些 修复程序,但找不到可行的解决方案。大多数修复是针对Eclipse IDE的。 这是编译时遇到的完整logcat错误: 是因为我使用了

  • 我正在努力解决古老的字谜问题。多亏了许多教程,我能够迭代一组字符串,递归地找到所有的排列,然后将它们与英语单词列表进行比较。我发现的问题是,在大约三个单词之后(通常是关于“变形”之类的东西),我会得到一个OutOfMemory错误。我试着把我的批分成小的集合,因为它似乎是消耗我所有内存的递归部分。但即使只是“变形”也把它锁起来了... 编辑:根据出色的反馈,我已经将生成器从排列更改为工作查找: 它

  • 在我的构造函数中,我可能不得不缩短它。虽然我第一次尝试就开始工作了。记录cat消息: 05-08 19:09:46.035:E/dalvikvm-heap(420):28字节分配内存不足。

  • 我从记忆中得到消息。我是Android的初学者,我不知道原因。我如何解决这个问题?下面是日志: 1.424 4944-4944/com.bsp.AndroidTraining E/ART:抛出OutOfMemoryError“在OOM之前无法分配带有12个空闲字节和12B的162字节分配”(递归情况)06-10 02:03:51.454 494-4944/com.bsp.androidTraini