Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.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 Apache POI 3.9 Eclipse(读取大xlsx文件)_Java_Eclipse_Excel_Apache - Fatal编程技术网

java Apache POI 3.9 Eclipse(读取大xlsx文件)

java Apache POI 3.9 Eclipse(读取大xlsx文件),java,eclipse,excel,apache,Java,Eclipse,Excel,Apache,我试图读取一系列excel文件(.xlsx),但当文件有很多行时,代码就无法工作。。当文件很小时,一切正常。我试图从每个文件的第二页读取第一列,从第5行开始。这是我的代码: String FilePath ="C:\\xxx"; List<String> data = new ArrayList<String>(); File[] listOfFiles = new File(FilePath).listFiles(); for (int i

我试图读取一系列excel文件(.xlsx),但当文件有很多行时,代码就无法工作。。当文件很小时,一切正常。我试图从每个文件的第二页读取第一列,从第5行开始。这是我的代码:

String FilePath ="C:\\xxx";
    List<String> data = new ArrayList<String>();
    File[] listOfFiles = new File(FilePath).listFiles();


    for (int i = 0; i < listOfFiles.length; i++) {
      if (listOfFiles[i].isFile() && listOfFiles[i].getName().substring(listOfFiles[i].getName().length()-4).equals("xlsx")) {              

        int pos_data = 0;       
        String excelFilePath = "C:\\xxx\\" + listOfFiles[i].getName();
        FileInputStream inputStream = new FileInputStream(new File(excelFilePath));


        Workbook workbook = new XSSFWorkbook(inputStream);
        Sheet firstSheet = workbook.getSheetAt(1);
        java.util.Iterator<Row> iterator = firstSheet.iterator();

        while (iterator.hasNext()) {
            Row nextRow = iterator.next();
            java.util.Iterator<Cell> cellIterator = nextRow.cellIterator();

                Cell cell = cellIterator.next();

                if(pos_data > 4)
                    data.add(cell.getStringCellValue());

                pos_data++;

        }   

        workbook.close();
        inputStream.close();
      }
    }
stringfilepath=“C:\\xxx”;
列表数据=新的ArrayList();
File[]listOfFiles=新文件(FilePath).listFiles();
for(int i=0;i4)
data.add(cell.getStringCellValue());
pos_数据++;
}   
workbook.close();
inputStream.close();
}
}
我已经做了一些测试,当文件很大时,在第一次迭代中FirstSheet.getLastRowNum()返回-1,单元格中的值返回列中的最后一个值


我试着自己去弄清楚,但我以前从未使用过POI,所以我想征求你的意见

尝试使用SXSSF而不是XSSF。这将允许您处理大型excel文件。

谢谢您的回复,但我需要阅读一个大的excel文件,而不是编写。写作部分一点问题也没有。