Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android上使用Apache poi读取xls时内存不足_Java_Android_Out Of Memory_Apache Poi - Fatal编程技术网

Java 在Android上使用Apache poi读取xls时内存不足

Java 在Android上使用Apache poi读取xls时内存不足,java,android,out-of-memory,apache-poi,Java,Android,Out Of Memory,Apache Poi,我正在尝试为android创建一个非常基本的电子表格(XLS)查看器。 使用Apache poi API时,我在创建新XSSFWorkbook对象时出现内存不足错误: mWorkBook = new XSSFWorkbook(file); 如何在不将整个文件加载到内存的情况下获取.xls中的特定行/单元格?电子表格不适合随机访问。电子表格之所以没有为此目的而设计,是因为单元格可以任意长,而行中可以有任意数量的单元格。如果不是这样,并且每一行都有固定的字节大小,那么您只需跳过读取文件的第一个(R

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

mWorkBook = new XSSFWorkbook(file);

如何在不将整个文件加载到内存的情况下获取.xls中的特定行/单元格?

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


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

如何获取特定的行/单元格?我认为答案只是读取整个文件。它读取整个文件,但它这样做时不会将整个内容加载到内存中,并且您可以在不读取所有行的情况下关闭流。即,一旦您读取了所需的行,就可以将其关闭。查看ApachePOI中的流式API。但它能在第一行以外的其他地方开始阅读吗?如果我在文件的一半需要一行呢?读取整个文件直到该行都不会很好地工作。电子表格不是设计成这样访问的。您必须在文件格式的限制范围内处理它们。如果您需要快速随机读取访问,我建议将数据加载到索引存储(如数据库)中。