读取Excel工作表标题时出错

时间:2018-01-17 11:02:17

标签: java apache-poi fileinputstream

我有一个excel文件,包含4个不同的工作表,可供我的项目阅读。所有4张包含不同的标题和不同的列数。当我删除所有标题并通过具有相同数量的列使一切看起来相同时,代码可以正常工作。但是我无权按照自己的意愿修改excel表。 请有人建议我如何使用标题读取excel文件,即使列数不同。这是我读取excel文件的代码:

public class ReadExcelFileAndStore {

    public List getTheFileAsObject(String filePath){
        List <Employee> employeeList = new ArrayList<>();
        try {
            FileInputStream file = new FileInputStream(new File(filePath));

            // Get the workbook instance for XLS file
            HSSFWorkbook workbook = new HSSFWorkbook(file);

            int numberOfSheets = workbook.getNumberOfSheets();
            //System.out.println(numberOfSheets);
            //loop through each of the sheets
           for(int i = 0; i < numberOfSheets; i++) {

               // Get first sheet from the workbook
               HSSFSheet sheet = workbook.getSheetAt(i);
               String sheetName = workbook.getSheetName(i);

               // Iterate through each rows from first sheet
               Iterator <Row> rowIterator = sheet.rowIterator();
               Row headerRow= rowIterator.next();

               while (rowIterator.hasNext()) {

                   // Get Each Row
                   Row row = rowIterator.next();

                   // For each row, iterate through each columns
                   Iterator<Cell> cellIterator = row.cellIterator();

                   Employee employee = new Employee();

                   while (cellIterator.hasNext()) {

                       Cell cell = cellIterator.next();

                       int columnIndex = cell.getColumnIndex();

                       switch (columnIndex + 1) {

                           case 1:
                               employee.setEmpName(cell.getStringCellValue());
                               break;
                           case 2:
                               employee.setExtCode((int) cell.getNumericCellValue());
                               break;
                       }
                   }
                   employeeList.add(employee);
               }
           }
            file.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return employeeList;
    }
}

0 个答案:

没有答案