java Apache POI 3.9 Eclipse(读取大xlsx文件)
我试图读取一系列excel文件(.xlsx),但当文件有很多行时,代码就无法工作。。当文件很小时,一切正常。我试图从每个文件的第二页读取第一列,从第5行开始。这是我的代码: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
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文件,而不是编写。写作部分一点问题也没有。