public ImportWizardExcelPrognosis(File excelFile) throws Exception {

    Workbook workbook = Workbook.getWorkbook(excelFile);
    ArrayList<String> lowercasedSheetNames = new ArrayList<String>();
    Map<String, String> lowerToOriginalName = new HashMap<String, String>();

    try {

      for (String sheetName : workbook.getSheetNames()) {
        lowercasedSheetNames.add(sheetName.toLowerCase());
        lowerToOriginalName.put(sheetName.toLowerCase(), sheetName);
      }

      if (lowercasedSheetNames.contains("molgenisrole")) {
        String originalSheetname = lowerToOriginalName.get("molgenisrole");
        Sheet sheet = workbook.getSheet(originalSheetname);
        MolgenisRoleExcelReader excelReader = new MolgenisRoleExcelReader();
        List<String> allHeaders = excelReader.getNonEmptyHeaders(sheet);
        MolgenisRole entity = new MolgenisRole();
        headersToMaps(originalSheetname, allHeaders, entity.getFields());
      }
      if (lowercasedSheetNames.contains("molgenisgroup")) {
        String originalSheetname = lowerToOriginalName.get("molgenisgroup");
        Sheet sheet = workbook.getSheet(originalSheetname);
        MolgenisGroupExcelReader excelReader = new MolgenisGroupExcelReader();
        List<String> allHeaders = excelReader.getNonEmptyHeaders(sheet);
        MolgenisGroup entity = new MolgenisGroup();
        headersToMaps(originalSheetname, allHeaders, entity.getFields());
      }
      if (lowercasedSheetNames.contains("institute")) {
        String originalSheetname = lowerToOriginalName.get("institute");
        Sheet sheet = workbook.getSheet(originalSheetname);
        InstituteExcelReader excelReader = new InstituteExcelReader();
        List<String> allHeaders = excelReader.getNonEmptyHeaders(sheet);
        Institute entity = new Institute();
        headersToMaps(originalSheetname, allHeaders, entity.getFields());
      }
      if (lowercasedSheetNames.contains("ontology")) {
        String originalSheetname = lowerToOriginalName.get("ontology");
        Sheet sheet = workbook.getSheet(originalSheetname);
        OntologyExcelReader excelReader = new OntologyExcelReader();
        List<String> allHeaders = excelReader.getNonEmptyHeaders(sheet);
        Ontology entity = new Ontology();
        headersToMaps(originalSheetname, allHeaders, entity.getFields());
      }
      if (lowercasedSheetNames.contains("ontologyterm")) {
        String originalSheetname = lowerToOriginalName.get("ontologyterm");
        Sheet sheet = workbook.getSheet(originalSheetname);
        OntologyTermExcelReader excelReader = new OntologyTermExcelReader();
        List<String> allHeaders = excelReader.getNonEmptyHeaders(sheet);
        OntologyTerm entity = new OntologyTerm();
        headersToMaps(originalSheetname, allHeaders, entity.getFields());
      }
      if (lowercasedSheetNames.contains("person")) {
        String originalSheetname = lowerToOriginalName.get("person");
        Sheet sheet = workbook.getSheet(originalSheetname);
        PersonExcelReader excelReader = new PersonExcelReader();
        List<String> allHeaders = excelReader.getNonEmptyHeaders(sheet);
        Person entity = new Person();
        headersToMaps(originalSheetname, allHeaders, entity.getFields());
      }
      if (lowercasedSheetNames.contains("molgenisuser")) {
        String originalSheetname = lowerToOriginalName.get("molgenisuser");
        Sheet sheet = workbook.getSheet(originalSheetname);
        MolgenisUserExcelReader excelReader = new MolgenisUserExcelReader();
        List<String> allHeaders = excelReader.getNonEmptyHeaders(sheet);
        MolgenisUser entity = new MolgenisUser();
        headersToMaps(originalSheetname, allHeaders, entity.getFields());
      }
      if (lowercasedSheetNames.contains("molgenisrolegrouplink")) {
        String originalSheetname = lowerToOriginalName.get("molgenisrolegrouplink");
        Sheet sheet = workbook.getSheet(originalSheetname);
        MolgenisRoleGroupLinkExcelReader excelReader = new MolgenisRoleGroupLinkExcelReader();
        List<String> allHeaders = excelReader.getNonEmptyHeaders(sheet);
        MolgenisRoleGroupLink entity = new MolgenisRoleGroupLink();
        headersToMaps(originalSheetname, allHeaders, entity.getFields());
      }
      if (lowercasedSheetNames.contains("molgenisfile")) {
        String originalSheetname = lowerToOriginalName.get("molgenisfile");
        Sheet sheet = workbook.getSheet(originalSheetname);
        MolgenisFileExcelReader excelReader = new MolgenisFileExcelReader();
        List<String> allHeaders = excelReader.getNonEmptyHeaders(sheet);
        MolgenisFile entity = new MolgenisFile();
        headersToMaps(originalSheetname, allHeaders, entity.getFields());
      }
      if (lowercasedSheetNames.contains("runtimeproperty")) {
        String originalSheetname = lowerToOriginalName.get("runtimeproperty");
        Sheet sheet = workbook.getSheet(originalSheetname);
        RuntimePropertyExcelReader excelReader = new RuntimePropertyExcelReader();
        List<String> allHeaders = excelReader.getNonEmptyHeaders(sheet);
        RuntimeProperty entity = new RuntimeProperty();
        headersToMaps(originalSheetname, allHeaders, entity.getFields());
      }
      if (lowercasedSheetNames.contains("publication")) {
        String originalSheetname = lowerToOriginalName.get("publication");
        Sheet sheet = workbook.getSheet(originalSheetname);
        PublicationExcelReader excelReader = new PublicationExcelReader();
        List<String> allHeaders = excelReader.getNonEmptyHeaders(sheet);
        Publication entity = new Publication();
        headersToMaps(originalSheetname, allHeaders, entity.getFields());
      }
      if (lowercasedSheetNames.contains("usecase")) {
        String originalSheetname = lowerToOriginalName.get("usecase");
        Sheet sheet = workbook.getSheet(originalSheetname);
        UseCaseExcelReader excelReader = new UseCaseExcelReader();
        List<String> allHeaders = excelReader.getNonEmptyHeaders(sheet);
        UseCase entity = new UseCase();
        headersToMaps(originalSheetname, allHeaders, entity.getFields());
      }
      if (lowercasedSheetNames.contains("molgenisentity")) {
        String originalSheetname = lowerToOriginalName.get("molgenisentity");
        Sheet sheet = workbook.getSheet(originalSheetname);
        MolgenisEntityExcelReader excelReader = new MolgenisEntityExcelReader();
        List<String> allHeaders = excelReader.getNonEmptyHeaders(sheet);
        MolgenisEntity entity = new MolgenisEntity();
        headersToMaps(originalSheetname, allHeaders, entity.getFields());
      }
      if (lowercasedSheetNames.contains("molgenispermission")) {
        String originalSheetname = lowerToOriginalName.get("molgenispermission");
        Sheet sheet = workbook.getSheet(originalSheetname);
        MolgenisPermissionExcelReader excelReader = new MolgenisPermissionExcelReader();
        List<String> allHeaders = excelReader.getNonEmptyHeaders(sheet);
        MolgenisPermission entity = new MolgenisPermission();
        headersToMaps(originalSheetname, allHeaders, entity.getFields());
      }

      for (String sheetName : lowerToOriginalName.values()) {
        if (importOrder.contains(sheetName)) {
          sheetsImportable.put(sheetName, true);
        } else {
          sheetsImportable.put(sheetName, false);
        }
      }

    } catch (Exception e) {
      throw e;
    } finally {
      workbook.close();
    }
  }