parseSchools static method

List<School> parseSchools(
  1. Excel file
)

Implementation

static List<School> parseSchools(Excel file) {
  List<School> schools = [];

  // Basic validation for file structure
  if (file.sheets.length < 2) {
    throw ExcelParsingException("Le fichier des écoles doit contenir au moins deux feuilles (Europe et Hors-Europe)");
  }

  //Données Europe et Hors-Europe
  for(int eu=0; eu<2; eu++) {
    String sheetName = file.sheets.keys.toList()[eu];
    var sheet = file.sheets[sheetName];

    if (sheet == null || sheet.maxRows < 2) {
      // Ajouter une throw indiquant que le ficher n'as pas été parsé correctement
      return [];
    }
    //Afficher la première colonne
    //int MAXCOLUMN = sheet.rows[0].length - 1;
    String? colData = sheet.rows[0][0]?.value.toString();
    int MAXCOLUMN = 1;
    while (colData != "" && colData != null){
      print(colData);
      colData = sheet.rows[0][MAXCOLUMN]?.value.toString();
      MAXCOLUMN++;
    }
    MAXCOLUMN--;
    /*for (int col = 0; col < MAXCOLUMN; col++) {
      String value = sheet.rows[0][col]?.value.toString() ?? "Problème 1ere colonne" ;
      stdout.write("$value; ");
    }*/
    print("");
    // Traiter chaque ligne à partir de la ligne 2 (index 1) qui contient les données
    for (int row = 1; row < sheet.maxRows; row++) {
      // Vérifiez si la ligne contient des données
      if (sheet.rows[row].isEmpty || sheet.rows[row][0] == null) continue;
      // Offre de séjour
      //String offre = sheet.rows[row][0]?.value.toString() ?? "Problème parsing";
      //print("Offre: $offre");
      for (int col = 0; col < MAXCOLUMN; col++) { //MAXCOLUMN YEAH
        String value = sheet.rows[row][col]?.value.toString() ?? "Problème parsing";
        stdout.write("$value; ");
      }
      //VERSION DU TABLEUR
      int version = 2;
      if(version==2) {
        String name = sheet.rows[row][0]?.value.toString() ?? "PROBLEM NAME";
        String country = sheet.rows[row][1]?.value.toString() ??
            "PROBLEM COUNTRY";
        String contract = sheet.rows[row][2]?.value.toString() ??
            "PROBLEM CONTRACT_TYPE";
        int slots = int.parse(sheet.rows[row][3]?.value.toString() ?? "-1");
        int bSlots = int.parse(sheet.rows[row][4]?.value.toString() ?? "-1");
        int mSlots = int.parse(sheet.rows[row][5]?.value.toString() ?? "-1");
        List<String> specialization = specializationStringToList(
            sheet.rows[row][6]?.value.toString() ?? "PROBLEM SPECIALIZATION");
        String graduationLevel = sheet.rows[row][7]?.value.toString() ??
            "PROBLEM GRADUATION_LEVEL";
        String program = sheet.rows[row][8]?.value.toString() ??
            "PROBLEM PROGRAM";
        String useLanguage = sheet.rows[row][9]?.value.toString() ??
            "PROBLEM USE_LANGUAGE";
        String reqLangLevel = sheet.rows[row][10]?.value.toString() ??
            "PROBLEM REQ_LANG_LEVEL";
        String academicLevel = sheet.rows[row][11]?.value.toString() ??
            "PROBLEM ACADEMIC_LEVEL";
        School school = School(
            name,
            country,
            contract,
            slots,
            bSlots,
            mSlots,
            specialization,
            graduationLevel,
            program,
            useLanguage,
            reqLangLevel,
            academicLevel
        );
        schools.add(school);
      }
      if(version==1) {
        String name = sheet.rows[row][0]?.value.toString() ?? "PROBLEM NAME";
        String country = sheet.rows[row][1]?.value.toString() ??
            "PROBLEM COUNTRY";
        String contract = sheet.rows[row][2]?.value.toString() ??
            "PROBLEM CONTRACT_TYPE";
        int slots = int.parse(sheet.rows[row][3]?.value.toString() ?? "-1");
        int bSlots = slots;
        int mSlots = slots;
        List<String> specialization = specializationStringToList(
            sheet.rows[row][5]?.value.toString() ?? "PROBLEM SPECIALIZATION");
        String graduationLevel = sheet.rows[row][6]?.value.toString() ??
            "PROBLEM GRADUATION_LEVEL";
        String program = sheet.rows[row][7]?.value.toString() ??
            "PROBLEM PROGRAM";
        String useLanguage = sheet.rows[row][8]?.value.toString() ??
            "PROBLEM USE_LANGUAGE";
        String reqLangLevel = sheet.rows[row][9]?.value.toString() ??
            "PROBLEM REQ_LANG_LEVEL";
        String academicLevel = sheet.rows[row][10]?.value.toString() ??
            "PROBLEM ACADEMIC_LEVEL";
        School school = School(
            name,
            country,
            contract,
            slots,
            bSlots,
            mSlots,
            specialization,
            graduationLevel,
            program,
            useLanguage,
            reqLangLevel,
            academicLevel
        );
        schools.add(school);
      }
      print("");
    }
  }
  print("LES SCHOOLS: $schools");
  print("Normalemennt MONS:");
  print(schools[5].name);print(schools[5].country);print(schools[5].content_type);print(schools[5].specialization);

  if (schools.isEmpty) {
    throw ExcelParsingException("Aucune école n'a été trouvée dans le fichier");
  }

  return schools;
}