Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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 如何使用ApachePOI高效地从FTP服务器读取大型excel文件?_Java_Excel_Ftp_Apache Poi_Sftp - Fatal编程技术网

Java 如何使用ApachePOI高效地从FTP服务器读取大型excel文件?

Java 如何使用ApachePOI高效地从FTP服务器读取大型excel文件?,java,excel,ftp,apache-poi,sftp,Java,Excel,Ftp,Apache Poi,Sftp,我想读取包含300k记录的大型excel文件(.xls),文件大小可达300MB。读取后,我想将该数据加载到db表中 我编写了一个普通的poi代码来从本地机器读取xls文件。我用大约60k条记录对excel文件运行了这段代码,它运行得非常好。此外,我还编写了从ftp获取inputstream的代码,并运行了该代码,它运行得很好,但当我在本地运行带有200k+记录的文件的相同代码时,它给了我一些系统gc内存已满的错误。我还没有试着用ftp服务器上的200k条记录运行那个代码 使用哪种方式从FTP服

我想读取包含300k记录的大型excel文件(.xls),文件大小可达300MB。读取后,我想将该数据加载到db表中

我编写了一个普通的poi代码来从本地机器读取xls文件。我用大约60k条记录对excel文件运行了这段代码,它运行得非常好。此外,我还编写了从ftp获取inputstream的代码,并运行了该代码,它运行得很好,但当我在本地运行带有200k+记录的文件的相同代码时,它给了我一些系统gc内存已满的错误。我还没有试着用ftp服务器上的200k条记录运行那个代码

使用哪种方式从FTP服务器读取文件? 我在互联网上也看到了以下代码行:

InputStream is = new FileInputStream(new File("/path/to/workbook.xlsx")); 
Workbook workbook = 
StreamingReader.builder().rowCacheSize(100).bufferSize(4096).
sheetIndex(0).open(is);

但上面的代码行给了我工作簿对象。我想要一个XSSFWorkbook对象。

您有要测试的文件吗?您可以放在某个位置以便我们可以尝试吗?如果同一个文件在本地可以正常打开,为什么不将代码分为两个步骤?一个是从FTP下载到临时文件,另一个是从临时文件读取电子表格?我没有这个文件,这个文件是保密的。@Gagravarr我会试试的。但是客户端需要的不是下载,而是直接读取,而是让我们看看,但是下载需要时间,这就是为什么我们决定直接流式传输。您是否有文件要测试,您可以放在某个位置以便我们可以尝试?如果同一个文件在本地可以正常打开,为什么不将代码分为两个步骤?一个是从FTP下载到临时文件,另一个是从临时文件读取电子表格?我没有这个文件,这个文件是保密的。@Gagravarr我会试试的。但大多数情况下,客户端需要的不是下载,而是直接阅读,但下载需要时间,这就是我们决定直接流媒体的原因