如何从java中的文件列表中的特定文件中获取lastRowNum()

时间:2015-11-27 06:56:39

标签: java apache-poi

从文件夹中读取特定文件时,我无法获取特定文件的lastRowNum()。 lastRowNum()方法在合并文件夹中的所有文件后返回最后一行。我需要一个特定的文件。

以下是使用的代码

File[] listOfFiles = folder.listFiles();

for (File file : listOfFiles)
{
if (file.isFile()&&(file.getName().substring(file.getName().lastIndexOf('.')+1).equals("xlsx")))
{
 Workbook workbook =WorkbookFactory.create(file.getAbsoluteFile());
                       Sheet sheet = workbook.getSheetAt(0);
                       int j = sheet.getLastRowNum();
                       System.out.println(j);
    }   
}  

我输出为340,这是文件夹中所有文件中所有值的总和。 但是对于第一张纸应该是40.如在第一张纸中它只包含40行

1 个答案:

答案 0 :(得分:0)

我在循环中使用了break语句,当rowIterator.next()方法返回null时。这样一张表结束了,我再次从其他表开始。 我没有计算lastRowNum()值来遍历行。 不知何故,这让我可以阅读所有文件。

Workbook workbook =WorkbookFactory.create(file.getAbsoluteFile());
                       Sheet sheet = workbook.getSheet("XYZ");
                       Iterator<Row> rowIterator = sheet.iterator();
                       rowIterator.next(); //Skipping headings              
                       while (rowIterator.hasNext())
                       {
                           Row row = rowIterator.next();
                           Iterator<Cell> cellIterator = row.cellIterator();
                           SheetObject obj1= new SheetObject();

                           Cell cell = cellIterator.next();
                           if(cell.getCellType() == Cell.CELL_TYPE_BLANK) {
                               break;
                           }
                           obj1.setValue1(val);
                           String temp = cell.getStringCellValue();
                           obj1.setModule(temp);  }

但是,问题的解决方案尚待解决。