public LeseNotenAusExcel(string afileName, StatusChanged StatusChangedMethod) { fileName = afileName; this.StatusChanged = StatusChangedMethod; Status("Öffne Datei " + afileName); xls = new OpenNotendatei(fileName); // Liste der gespeicherten Sids bereitstellen (alte Sids sollen nicht aus Excel gelöscht werden) for (int i = CellConstant.zeileSIdErsterSchueler; i < CellConstant.zeileSIdErsterSchueler + OpenNotendatei.MaxAnzahlSchueler; i++) { int sid = Convert.ToInt32(xls.ReadValue(xls.sid, CellConstant.SId + i)); if (sid == int.MaxValue) { continue; // Schüler wurde gelöscht } else { if (sid == 0) break; sidList.Add(sid); } } kurs = new Kurs(Convert.ToInt32(xls.ReadValue(xls.sid, CellConstant.KursId))); Status("Synchronisiere Datei " + afileName); Synchronize(); Status("Übertrage Noten aus Datei " + afileName); DeleteAlteNoten(); UebertrageNoten(); success = true; // TODO: Gefährlich, private Variablen zu disposen? xls.Dispose(); xls = null; Status("fertig mit Datei " + afileName); }
/// <summary> /// Aus dem übergebenen Kurs wird eine Exceldatei mit allen Schülerdaten generiert /// </summary> public ErzeugeExcelDatei(diNoDataSet.KursRow aKurs) { kurs = new Kurs(aKurs); if (kurs.getLehrer == null) { return; // es gibt auch Kurse ohne Lehrer, z. B. übernommene Noten aus 11ter Klasse } alleSchueler = kurs.getSchueler(true); // sind bereits via SQL nach Klasse und Namen sortiert if (alleSchueler.Count == 0) { log.WarnFormat("Der Kurs {0} hat keine Schueler ", kurs.Data.Bezeichnung); return; } if (alleSchueler.Count > OpenNotendatei.MaxAnzahlSchueler) { throw new InvalidOperationException("zu viele Schüler " + alleSchueler.Count); } if (string.IsNullOrEmpty(kurs.FachBezeichnung)) { // ignoriere FPA, Seminare und ähnliche Platzhalter log.Debug("Erzeuge keine Datei für das Fach " + kurs.getFach.Kuerzel); return; } CopyExcelFile(); xls = new OpenNotendatei(fileName); FillExcelFile(); SwitchNotenschluessel(); // speichere und schließe Datei xls.workbook.Save(); xls.Dispose(); // Destruktor aufrufen xls = null; }