Issue while reading Excel document (Java code)

后端 未结 3 811
深忆病人
深忆病人 2020-12-22 10:45

I have some Java code which reads the Excel data. On running the Java code, it\'s showing the following error. Help me resolve the same. Also, I need to know other method of

相关标签:
3条回答
  • 2020-12-22 11:12

    you are using the wrong class for reading the file HSSFWorkbook is for old excel format. use XSSFWorkbook instead

    Edited: copied from http://www.coderanch.com/t/463779/java/java/read-xlsx-sheet-Client-Side. did u do the same thing?

    try { 
    System.out.println("destDir==> "+destDir); 
    XSSFWorkbook workBook = new XSSFWorkbook(destDir); 
    XSSFSheet sheet = workBook.getSheetAt(0); 
    totalRows = sheet.getPhysicalNumberOfRows(); 
    System.out.println("total no of rows >>>>"+totalRows); 
    
    } catch (IOException e) { 
    e.printStackTrace(); 
    } 
    

    Edit 2: Learn about apache POI from this link

    0 讨论(0)
  • 2020-12-22 11:16

    If you want to read a .xls file you must use HSSF (it supports only .xls format) but for .xlsx files you must use XSSF or another higher version API.

    0 讨论(0)
  • 2020-12-22 11:24

    After deleting previous imports class then try to add

    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.Workbook;
    import org.apache.poi.ss.usermodel.WorkbookFactory;
    
    
     private static void read(String path){
      Workbook workbook = null;
      FileInputStream fis = null;           
        try {
            File source = new File(path);
            if(source.exists()){
             fis = new FileInputStream(source);
             workbook = WorkbookFactory.create(source);
    
            }else{
                    JOptionPane.showMessageDialog(null, "File path is not exist.", "Error", JOptionPane.ERROR_MESSAGE);
            }       
    
            Sheet sheet = null;           
            int lastRowNum = 0;
            int numSheets = workbook.getNumberOfSheets();         
            for(int i = 0; i < numSheets; i++) {              
                sheet = workbook.getSheetAt(i);
                if(sheet.getPhysicalNumberOfRows() > 0) {                    
                    lastRowNum = sheet.getLastRowNum();                  
                    int lastCellNum = 0;               
                    for(Row row : sheet) {                  
                        Employee emp = new Employee();         
    
                        int numOfCell = row.getPhysicalNumberOfCells(); 
                        System.out.println("numOfCell:: "+numOfCell);
                        String stringValues [] = new String[numOfCell];
                        for(Cell cell : row) {
                           // cell = row.getCell(cellIndex);                        
                            int cellIndex = cell.getColumnIndex();                      
                            logger.info("cellIndex:: "+ cellIndex);
                             switch (cell.getCellType()) {
    
                             case Cell.CELL_TYPE_FORMULA:
                                // printValue = "FORMULA value=" + cell.getCellFormula();
                                 stringValues[cellIndex] = cell.getCellFormula();
                                 break;
    
                             case Cell.CELL_TYPE_NUMERIC:
                                 //printValue = "NUMERIC value=" + cell.getNumericCellValue();
                                 System.out.println("Value is numeric:: "+ cell.getNumericCellValue());
                                 stringValues[cellIndex]  = String.valueOf(cell.getNumericCellValue());
                                 break;
    
                             case Cell.CELL_TYPE_STRING:
                                // printValue = "STRING value=" + cell.getStringCellValue();
                                 stringValues[cellIndex]  = cell.getStringCellValue();
                                 break;
    
                             case Cell.CELL_TYPE_BLANK:
                                // printValue = "STRING value=" + cell.getStringCellValue();
                                 stringValues[cellIndex]  = cell.getStringCellValue();
                                 break;   
    
                             default:
                             } 
    
    
                         }           
    
                        } 
    
    
                    } 
                }            
            }     
    
            } catch (InvalidFormatException e) {
                logger.error(e.getMessage());
                e.printStackTrace();
            } catch (FileNotFoundException e) {          
                e.printStackTrace();
                logger.error(e.getMessage());
            } catch (IOException e) {
                logger.error(e.getMessage());
                e.printStackTrace();
            }   
            catch (Exception e) {
                logger.error(e.getMessage());
                e.printStackTrace();
            }   
            finally {
                if (fis != null) {
                    try {
                        fis.close();
                        fis = null;
                        } catch (IOException ioEx) {
                            logger.error(ioEx.getMessage());
                    } 
                }
            }    
         }
    
    0 讨论(0)
提交回复
热议问题