Excel文件包含5张工作表如何使用java一次读取所有数据

Excel文件包含5张工作表如何使用java一次读取所有数据,java,apache-poi,Java,Apache Poi,我正在使用这个…代码,但它将读取索引 FileInputStream fis = new FileInputStream(new File("PILOT.xlsx")); XSSFWorkbook workbook = new XSSFWorkbook(fis); XSSFSheet spreadsheet = workbook.getSheetAt(0); Iterator < Row &

我正在使用这个…代码,但它将读取索引

        FileInputStream fis = new FileInputStream(new File("PILOT.xlsx"));
              XSSFWorkbook workbook = new XSSFWorkbook(fis);
              XSSFSheet spreadsheet = workbook.getSheetAt(0);
              Iterator < Row > rowIterator = spreadsheet.iterator();
              while (rowIterator.hasNext()) 
              {
                 row = (XSSFRow) rowIterator.next();
                 Iterator < Cell > cellIterator = row.cellIterator();
                 while ( cellIterator.hasNext()) 
                 {
                    Cell cell = cellIterator.next();
                    switch (cell.getCellType()) 
                    {
                       case Cell.CELL_TYPE_NUMERIC:

                           if(cell.getCellType()==Cell.CELL_TYPE_NUMERIC){
                                if (DateUtil.isCellDateFormatted(cell)) {
                                    System.out.println(cell.getDateCellValue());
                                } else {
                                    System.out.println(cell.getNumericCellValue());
                                }
                        }
                    //   System.out.print(cell.getNumericCellValue() + " \t\t " );
                       break;
                       case Cell.CELL_TYPE_STRING:
                       System.out.print(
                       cell.getStringCellValue() + " \t\t " );
                       break;
                    }
                 }
                 System.out.println();
              }
              fis.close();
           }
FileInputStream fis=newfileinputstream(新文件(“PILOT.xlsx”);
XSSF工作簿=新XSSF工作簿(fis);
XSSFSheet电子表格=工作簿.getSheetAt(0);
迭代器rowIterator=debusheet.Iterator();
while(roweiterator.hasNext())
{
行=(XSSFRow)行迭代器.next();
迭代器cellIterator=row.cellIterator();
while(cellIterator.hasNext())
{
Cell=cellIterator.next();
开关(cell.getCellType())
{
case Cell.Cell\u类型\u数值:
if(cell.getCellType()==cell.cell\u TYPE\u NUMERIC){
if(DateUtil.isCellDateFormatted(单元格)){
System.out.println(cell.getDateCellValue());
}否则{
System.out.println(cell.getNumericCellValue());
}
}
//System.out.print(cell.getNumericCellValue()+“\t\t”);
打破
case Cell.Cell\u类型\u字符串:
系统输出(
cell.getStringCellValue()+“\t\t”);
打破
}
}
System.out.println();
}
fis.close();
}

请给出一次读取所有数据的最短方法…..我使用的是maven POI dependency…..请帮助我

您说工作簿有5张工作表,但您只读取代码中的一张工作表。因此,为了从工作簿中的所有工作表中读取数据,您需要将代码包装在一个循环中。因此,您目前拥有:

XSSFSheet spreadsheet = workbook.getSheetAt(0);
将其替换为下面的循环,并将剩余代码放入循环中

for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
        XSSFSheet spreadsheet = workbook.getSheetAt(i);
        // Your remaining code here
    }
for(int i=0;i

这将使您能够从所有5张工作表中提取数据。

执行此代码时,数字数据将以十进制打印……日期格式也以小数点打印……您能帮我吗