private void WritePari(int projektId, IProjektInfo pi) { log.Debug("WritePari"); //Excel.Worksheet targetSheet = _WorkBook.Worksheets.Add(); //targetSheet.Name = "Parifizierung"; var targetSheet = GetWorksheet("Parifizierung"); const int MAX_COL_INDEX = 10; // Überschrift Nutzflächenanteile CopyCells(_SheetPari, targetSheet, rowIndex1: 0, colIndex1: 0, rowIndex2: 0, colIndex2: MAX_COL_INDEX, copyColumnWidth: true); // bauvorhaben CopyCells(_SheetPari, targetSheet, rowIndex1: 1, colIndex1: 0, rowIndex2: 1, colIndex2: 0, copyColumnWidth: false); targetSheet.Cells[2, 1] = pi.Bauvorhaben; // räume mit kategorien mit zuabschlaginfo var raeume = _Database.GetRaeumeWithZuAbschlag(projektId).Where(x => IsNwTopName(x.Top)).OrderBy(x => x.Top, _TextNumSortComparer).ToList(); int gesSumNutzEinz = GetSumNutz(raeume); var raeumeGroupByTop = raeume.GroupBy(x => x.Top); // wohnungseigentumsobjekte CopyCells(_SheetPari, targetSheet, rowIndex1: 5, colIndex1: 0, rowIndex2: 1, colIndex2: 0, copyColumnWidth: false); var nrOfWEO = raeumeGroupByTop.Count(); targetSheet.Cells[6, 1] = nrOfWEO + " Wohnungseigentumsobjekte"; // header: Fieldnames CopyCells(_SheetPari, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false); CopyCells(_SheetPari, targetSheet, rowIndex1: 7, colIndex1: 0, rowIndex2: 7, colIndex2: MAX_COL_INDEX, copyColumnWidth: false); int targetRowIndex = 9; var matrix = new ExcelMatrix(targetRowIndex, MAX_COL_INDEX + 1); foreach (var topGroup in raeumeGroupByTop) { var top = topGroup.Key; // Top-Header CopyCells(_SheetPari, targetSheet, rowIndex1: 9, colIndex1: 0, rowIndex2: 9, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, top); var wohnTypIndex = targetRowIndex; IWohnungRecord wohnungRec = null; if (_WohnungInfos.TryGetValue(top, out wohnungRec)) { var wohnTyp = wohnungRec.Typ ?? ""; matrix.Add(wohnTypIndex, 10, wohnTyp); } var rGbKat = topGroup.GroupBy(x => x.Kategorie); targetRowIndex += 2; int sumNutzEinz = 0; foreach (var katGroup in rGbKat.OrderBy(x => x.Key, _KatSortComparer)) { IKategorieZaRecord kat = katGroup.Key; //bool isPkw = false; if (wohnungRec == null) { // check pkw string pkwWohnTyp = null; if (GetPkwWohnTyp(kat.Widmung, out pkwWohnTyp)) { //isPkw = true; matrix.Add(wohnTypIndex, 10, pkwWohnTyp); } } double m2 = 0.0; foreach (var raum in katGroup) { m2 += raum.Flaeche; } var nutzEinz = (int)Math.Round(m2 * kat.ActualNutzwert); sumNutzEinz += nutzEinz; // Kategorie CopyCells(_SheetPari, targetSheet, rowIndex1: 11, colIndex1: 0, rowIndex2: 11, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 1, kat.Lage); matrix.Add(targetRowIndex, 2, kat.Widmung); matrix.Add(targetRowIndex, 3, m2); matrix.Add(targetRowIndex, 4, "m²"); matrix.Add(targetRowIndex, 5, kat.ActualNutzwert); matrix.Add(targetRowIndex, 7, nutzEinz); targetRowIndex += 1; var begr = kat.Begrundung.Trim(); //if (isPkw) //{ // begr = "als Wohnungseigentumsobjekt"; //} //else if (string.Compare(begr, "als Zuschlag", StringComparison.OrdinalIgnoreCase) == 0) { begr = "als Wohnungseigentumszuschlag"; } else if (string.Compare(begr, "als Zubehör", StringComparison.OrdinalIgnoreCase) == 0) { begr = "als Wohnungseigentumszubehör"; } matrix.Add(targetRowIndex, 2, begr); targetRowIndex += 1; } // Summe // 18-20 wegen Abschlusslinie. Deshalt targetRowIndex - 1 CopyCells(_SheetPari, targetSheet, rowIndex1: 18, colIndex1: 0, rowIndex2: 20, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex - 1); targetRowIndex += 1; matrix.Add(targetRowIndex, 2, "Summe Nutzwert"); matrix.Add(targetRowIndex, 3, top); matrix.Add(targetRowIndex, 7, sumNutzEinz); matrix.Add(targetRowIndex, 8, sumNutzEinz); matrix.Add(targetRowIndex, 9, sumNutzEinz * 2); matrix.Add(targetRowIndex, 10, gesSumNutzEinz * 2); targetRowIndex += 3; } // Summe Gesamt targetRowIndex += 1; CopyCells(_SheetPari, targetSheet, rowIndex1: 20, colIndex1: 0, rowIndex2: 20, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 2, "SUMME MINDESTANTEILE"); matrix.Add(targetRowIndex, 7, gesSumNutzEinz); matrix.Add(targetRowIndex, 8, gesSumNutzEinz); matrix.Add(targetRowIndex, 9, gesSumNutzEinz * 2); matrix.Add(targetRowIndex, 10, gesSumNutzEinz * 2); matrix.Write(targetSheet); }
private Excel.Worksheet WriteSumme(int projektId, IProjektInfo pi) { log.Debug("WriteSumme"); var targetSheet = GetWorksheet("Summe"); const int MAX_COL_INDEX = 4; // Überschrift Nutzflächenanteile CopyCells(_SheetSumme, targetSheet, rowIndex1: 0, colIndex1: 0, rowIndex2: 0, colIndex2: MAX_COL_INDEX, copyColumnWidth: true); // bauvorhaben CopyCells(_SheetSumme, targetSheet, rowIndex1: 1, colIndex1: 0, rowIndex2: 1, colIndex2: 0, copyColumnWidth: false); targetSheet.Cells[2, 1] = pi.Bauvorhaben; // Gesamtfläche CopyCells(_SheetSumme, targetSheet, rowIndex1: 5, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false); // raume var raeume = _Database.GetRaeume(projektId); var wohnungen = _Database.GetWohnungen(projektId); #if !ALTEVARIANTE List <IRaumRecord> tops, allgs, pkws; SplitRaeume(raeume, out pkws, out tops, out allgs); #else // alte variante var tops = raeume.Where(x => IsTopForSumme(x)).ToList(); var pkws = raeume.Where(x => IsPkwForSumme(x)).ToList(); var allgs = raeume.Where(x => IsAllgForSumme(x)).ToList(); #endif // Liste 1: Tops und PKW double sumTopAndPKW = 0.0; int targetRowIndex = 7; var matrix = new ExcelMatrix(startRowIndex: targetRowIndex, nrOfCols: MAX_COL_INDEX + 1); // tops var raeumePerTop = tops.GroupBy(x => x.Top).OrderBy(x => x.Key, _TextNumSortComparer).ToList(); foreach (var raumKvp in raeumePerTop) { var top = raumKvp.Key; var summe = raumKvp.Sum(x => x.Flaeche); var wohnung = wohnungen.FirstOrDefault(x => x.Top == top); var widmung = (wohnung != null) ? (wohnung.Widmung ?? "Keine Widmung in Top-Block!") : "Keine Widmung in Top-Block!"; sumTopAndPKW += summe; CopyCells(_SheetSumme, targetSheet, rowIndex1: 7, colIndex1: 0, rowIndex2: 7, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, top); matrix.Add(targetRowIndex, 1, widmung); matrix.Add(targetRowIndex, 3, summe); matrix.Add(targetRowIndex, 4, "m²"); targetRowIndex++; } // PKV-Abstellplätze var sumPkwAbst = pkws.Sum(x => x.Flaeche); sumTopAndPKW += sumPkwAbst; CopyCells(_SheetSumme, targetSheet, rowIndex1: 7, colIndex1: 0, rowIndex2: 7, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, "PKW - ABSTELLPLÄTZE"); matrix.Add(targetRowIndex, 3, sumPkwAbst); matrix.Add(targetRowIndex, 4, "m²"); targetRowIndex++; // Summe CopyCells(_SheetSumme, targetSheet, rowIndex1: 20, colIndex1: 0, rowIndex2: 22, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); targetRowIndex++; matrix.Add(targetRowIndex, 0, "Summe"); matrix.Add(targetRowIndex, 3, sumTopAndPKW); matrix.Add(targetRowIndex, 4, "m²"); targetRowIndex += 2; CopyCells(_SheetSumme, targetSheet, rowIndex1: 23, colIndex1: 0, rowIndex2: 23, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, "Gesamtfläche aller TOP's ohne Allgemeinflächen"); matrix.Add(targetRowIndex, 3, sumTopAndPKW); matrix.Add(targetRowIndex, 4, "m²"); targetRowIndex += 4; CopyCells(_SheetSumme, targetSheet, rowIndex1: 27, colIndex1: 0, rowIndex2: 27, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, "Gesamtfläche aller TOP's ohne Allgemeinflächen"); matrix.Add(targetRowIndex, 3, sumTopAndPKW); matrix.Add(targetRowIndex, 4, "m²"); // allgemeinflächen var sumAllgs = allgs.Sum(x => x.Flaeche); targetRowIndex++; CopyCells(_SheetSumme, targetSheet, rowIndex1: 27, colIndex1: 0, rowIndex2: 27, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, "Allgemeinflächen"); matrix.Add(targetRowIndex, 3, sumAllgs); matrix.Add(targetRowIndex, 4, "m²"); // gesamtsumme targetRowIndex++; CopyCells(_SheetSumme, targetSheet, rowIndex1: 29, colIndex1: 0, rowIndex2: 31, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); targetRowIndex += 2; matrix.Add(targetRowIndex, 0, "Gesamtfläche aller TOP's mit Allgemeinflächen"); matrix.Add(targetRowIndex, 3, sumTopAndPKW + sumAllgs); matrix.Add(targetRowIndex, 4, "m²"); matrix.Write(targetSheet); return(targetSheet); }
private void WriteTops(int projektId, IProjektInfo pi, Excel.Worksheet summeSheet) { log.Debug("WriteTops"); var topSheet = GetWorksheet("Top"); const int MAX_COL_INDEX = 4; // raume var raeume = _Database.GetRaeume(projektId); #if !ALTEVARIANTE List <IRaumRecord> tops, allgs, pkws; SplitRaeume(raeume, out pkws, out tops, out allgs); #else // alte variante var tops = raeume.Where(x => IsTopForSumme(x)).ToList(); #endif var raeumePerTop = tops.GroupBy(x => x.Top).OrderBy(x => x.Key, _TextNumSortComparer).ToList(); foreach (var raumKvp in raeumePerTop) { var top = raumKvp.Key; topSheet.Copy(topSheet); var targetSheet = GetWorksheet("Top (2)"); targetSheet.Name = top; // Überschrift Nutzflächenanteile CopyCells(_SheetTop, targetSheet, rowIndex1: 0, colIndex1: 0, rowIndex2: 0, colIndex2: MAX_COL_INDEX, copyColumnWidth: true); // bauvorhaben CopyCells(_SheetTop, targetSheet, rowIndex1: 1, colIndex1: 0, rowIndex2: 1, colIndex2: 0, copyColumnWidth: false); targetSheet.Cells[2, 1] = pi.Bauvorhaben; // Topname CopyCells(_SheetTop, targetSheet, rowIndex1: 5, colIndex1: 0, rowIndex2: 5, colIndex2: MAX_COL_INDEX, copyColumnWidth: false); targetSheet.Cells[6, 1] = top; // Start Matrix int targetRowIndex = 9; var matrix = new ExcelMatrix(startRowIndex: targetRowIndex, nrOfCols: MAX_COL_INDEX + 1); // Wohnung CopyCells(_SheetTop, targetSheet, rowIndex1: 9, colIndex1: 0, rowIndex2: 10, colIndex2: MAX_COL_INDEX, copyColumnWidth: false); IWohnungRecord wohnungRec = null; if (_WohnungInfos.TryGetValue(top, out wohnungRec)) { var wohnTyp = wohnungRec.Typ ?? ""; matrix.Add(targetRowIndex, 0, wohnTyp); } else { matrix.Add(targetRowIndex, 0, "Wohnungstyp unbekannt!"); } // Per Geschoß ohne Zuschlag und Zubehör targetRowIndex += 2; double sumGesamt = 0.0; var perGesch = raumKvp.GroupBy(x => x.Lage).OrderBy(x => x.Key, _GeschossSortComparer).ToList(); foreach (var rpg in perGesch) { var raeumeOhneZuSchlagUndZuBehoer = rpg.Where(x => IsTopWithoutZuschlagAndZubehoer(x)).OrderBy(x => x.Raum).ToList(); if (raeumeOhneZuSchlagUndZuBehoer.Count == 0) { continue; } var geschoss = rpg.Key; var sum = raeumeOhneZuSchlagUndZuBehoer.Sum(x => x.Flaeche); CopyCells(_SheetTop, targetSheet, rowIndex1: 11, colIndex1: 0, rowIndex2: 11, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, geschoss); foreach (var r in raeumeOhneZuSchlagUndZuBehoer) { matrix.Add(targetRowIndex, 2, r.Raum); matrix.Add(targetRowIndex, 3, r.Flaeche); matrix.Add(targetRowIndex, 4, "m²"); targetRowIndex++; CopyCells(_SheetTop, targetSheet, rowIndex1: 12, colIndex1: 0, rowIndex2: 12, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); } targetRowIndex++; CopyCells(_SheetTop, targetSheet, rowIndex1: 20, colIndex1: 0, rowIndex2: 21, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 2, "Summe"); matrix.Add(targetRowIndex, 3, sum); matrix.Add(targetRowIndex, 4, "m²"); targetRowIndex += 2; sumGesamt += sum; } // SUMME Fläche TOP ... CopyCells(_SheetTop, targetSheet, rowIndex1: 22, colIndex1: 0, rowIndex2: 22, colIndex2: MAX_COL_INDEX, copyColumnWidth: true, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, "SUMME Fläche " + top); matrix.Add(targetRowIndex, 3, sumGesamt); matrix.Add(targetRowIndex, 4, "m²"); targetRowIndex += 4; // ZUSCHLAG FLÄCHEN var sumZuschlag = 0.0; CopyCells(_SheetTop, targetSheet, rowIndex1: 9, colIndex1: 0, rowIndex2: 10, colIndex2: MAX_COL_INDEX, copyColumnWidth: true, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, "ZUSCHLAG FLÄCHEN"); targetRowIndex += 2; foreach (var rpg in perGesch) { var raeumeZuschlag = rpg.Where(x => IsZuschlag(x)).OrderBy(x => x.Raum).ToList(); if (raeumeZuschlag.Count == 0) { continue; } var sum = raeumeZuschlag.Sum(x => x.Flaeche); var geschoss = rpg.Key; CopyCells(_SheetTop, targetSheet, rowIndex1: 11, colIndex1: 0, rowIndex2: 11, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, geschoss); foreach (var r in raeumeZuschlag) { matrix.Add(targetRowIndex, 2, r.Raum); matrix.Add(targetRowIndex, 3, r.Flaeche); matrix.Add(targetRowIndex, 4, "m²"); targetRowIndex++; CopyCells(_SheetTop, targetSheet, rowIndex1: 12, colIndex1: 0, rowIndex2: 12, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); } sumGesamt += sum; sumZuschlag += sum; } targetRowIndex++; CopyCells(_SheetTop, targetSheet, rowIndex1: 20, colIndex1: 0, rowIndex2: 21, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 2, "Summe Zuschlag"); matrix.Add(targetRowIndex, 3, sumZuschlag); matrix.Add(targetRowIndex, 4, "m²"); targetRowIndex += 4; // ZUBEHÖR FLÄCHEN var sumZubehoer = 0.0; CopyCells(_SheetTop, targetSheet, rowIndex1: 9, colIndex1: 0, rowIndex2: 10, colIndex2: MAX_COL_INDEX, copyColumnWidth: true, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, "ZUBEHÖR FLÄCHEN"); targetRowIndex += 2; foreach (var rpg in perGesch) { var raeumeZuschlag = rpg.Where(x => IsZubehoer(x)).OrderBy(x => x.Raum).ToList(); if (raeumeZuschlag.Count == 0) { continue; } var geschoss = rpg.Key; var sum = raeumeZuschlag.Sum(x => x.Flaeche); CopyCells(_SheetTop, targetSheet, rowIndex1: 11, colIndex1: 0, rowIndex2: 11, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, geschoss); foreach (var r in raeumeZuschlag) { matrix.Add(targetRowIndex, 2, r.Raum); matrix.Add(targetRowIndex, 3, r.Flaeche); matrix.Add(targetRowIndex, 4, "m²"); targetRowIndex++; CopyCells(_SheetTop, targetSheet, rowIndex1: 12, colIndex1: 0, rowIndex2: 12, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); } sumGesamt += sum; sumZubehoer += sum; } targetRowIndex++; CopyCells(_SheetTop, targetSheet, rowIndex1: 20, colIndex1: 0, rowIndex2: 21, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 2, "Summe Zubehör"); matrix.Add(targetRowIndex, 3, sumZubehoer); matrix.Add(targetRowIndex, 4, "m²"); targetRowIndex += 2; // SUMME Flächen Zuschlag/Zubehör TOP ... CopyCells(_SheetTop, targetSheet, rowIndex1: 22, colIndex1: 0, rowIndex2: 22, colIndex2: MAX_COL_INDEX, copyColumnWidth: true, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, "SUMME Flächen Zuschlag/Zubehör " + top); matrix.Add(targetRowIndex, 3, sumZubehoer + sumZuschlag); matrix.Add(targetRowIndex, 4, "m²"); // SUMME ALLER FLÄCHE TOP ... targetRowIndex += 4; CopyCells(_SheetTop, targetSheet, rowIndex1: 45, colIndex1: 0, rowIndex2: 45, colIndex2: MAX_COL_INDEX, copyColumnWidth: true, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, "SUMME ALLER FLÄCHEN " + top); matrix.Add(targetRowIndex, 3, sumGesamt); matrix.Add(targetRowIndex, 4, "m²"); matrix.Write(targetSheet); } }
private void WriteAbstellAlt(int projektId, IProjektInfo pi) { log.Debug("WriteAbstell"); var targetSheet = GetWorksheet("Abstellplätze"); const int MAX_COL_INDEX = 4; // Überschrift PKW ABSTELLPLÄTZE CopyCells(_SheetAbstell, targetSheet, rowIndex1: 0, colIndex1: 0, rowIndex2: 0, colIndex2: MAX_COL_INDEX, copyColumnWidth: true); // Abstellplätze CopyCells(_SheetAbstell, targetSheet, rowIndex1: 4, colIndex1: 0, rowIndex2: 5, colIndex2: MAX_COL_INDEX, copyColumnWidth: false); // Gesamtfläche CopyCells(_SheetAbstell, targetSheet, rowIndex1: 5, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false); // raume var raeume = _Database.GetRaeume(projektId); #if !ALTEVARIANTE List <IRaumRecord> tops, allgs, pkws; SplitRaeume(raeume, out pkws, out tops, out allgs); var pkwRaeumePerWidmung = pkws.GroupBy(x => x.Widmung); #else // alte variante var pkwRaeumePerWidmung = raeume.Where(x => IsPkwForSumme(x)).GroupBy(x => x.Widmung); #endif int targetRowIndex = 6; var matrix = new ExcelMatrix(startRowIndex: targetRowIndex, nrOfCols: MAX_COL_INDEX + 1); double sumGes = 0.0; foreach (var raumKvp in pkwRaeumePerWidmung) { var art = raumKvp.Key; double sumArt = 0.0; var perGesch = raumKvp.GroupBy(x => x.Lage).OrderBy(x => x.Key, _GeschossSortComparer); foreach (var rpg in perGesch) { var geschoss = rpg.Key; var sumProGesch = rpg.Sum(x => x.Flaeche); sumGes += sumProGesch; sumArt += sumProGesch; CopyCells(_SheetAbstell, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, geschoss); foreach (var r in rpg) { matrix.Add(targetRowIndex, 1, r.Top); matrix.Add(targetRowIndex, 2, r.Widmung); matrix.Add(targetRowIndex, 3, r.Flaeche); matrix.Add(targetRowIndex, 4, "m²"); targetRowIndex++; CopyCells(_SheetAbstell, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); } } CopyCells(_SheetAbstell, targetSheet, rowIndex1: 22, colIndex1: 0, rowIndex2: 24, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); targetRowIndex++; matrix.Add(targetRowIndex, 1, "Summe"); matrix.Add(targetRowIndex, 2, art); matrix.Add(targetRowIndex, 3, sumArt); matrix.Add(targetRowIndex, 4, "m²"); targetRowIndex += 2; } targetRowIndex += 2; CopyCells(_SheetAbstell, targetSheet, rowIndex1: 46, colIndex1: 0, rowIndex2: 46, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, "SUMME ALLE PKW ABSTELLPLÄTZE"); matrix.Add(targetRowIndex, 3, sumGes); matrix.Add(targetRowIndex, 4, "m²"); matrix.Write(targetSheet); }
private void WriteAbstell(int projektId, IProjektInfo pi) { log.Debug("WriteAbstell"); var targetSheet = GetWorksheet("Abstellplätze"); const int MAX_COL_INDEX = 6; // Überschrift PKW ABSTELLPLÄTZE CopyCells(_SheetAbstell, targetSheet, rowIndex1: 0, colIndex1: 0, rowIndex2: 0, colIndex2: MAX_COL_INDEX, copyColumnWidth: true); // Abstellplätze CopyCells(_SheetAbstell, targetSheet, rowIndex1: 4, colIndex1: 0, rowIndex2: 5, colIndex2: MAX_COL_INDEX, copyColumnWidth: false); // Gesamtfläche CopyCells(_SheetAbstell, targetSheet, rowIndex1: 5, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false); // raume var raeume = _Database.GetRaeume(projektId); #if !ALTEVARIANTE List <IRaumRecord> tops, allgs, pkws; SplitRaeume(raeume, out pkws, out tops, out allgs); List <AbstellAndZuschlag> abAndZu = SplitPkws(pkws); var pkwRaeumePerWidmung = abAndZu.GroupBy(x => x.Abstellplatz.Widmung); #else // alte variante var pkwRaeumePerWidmung = raeume.Where(x => IsPkwForSumme(x)).GroupBy(x => x.Widmung); #endif int targetRowIndex = 6; var matrix = new ExcelMatrix(startRowIndex: targetRowIndex, nrOfCols: MAX_COL_INDEX + 1); double sumGes = 0.0; foreach (var raumKvp in pkwRaeumePerWidmung) { var art = raumKvp.Key; double sumArt = 0.0; var perGesch = raumKvp.GroupBy(x => x.Abstellplatz.Lage).OrderBy(x => x.Key, _GeschossSortComparer); foreach (var rpg in perGesch) { var geschoss = rpg.Key; var sumProGesch = rpg.Sum(x => x.Abstellplatz.Flaeche); sumGes += sumProGesch; sumArt += sumProGesch; CopyCells(_SheetAbstell, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, geschoss); var rpgOrderByTops = rpg.OrderBy(x => x.Abstellplatz.Top, _TextNumSortComparer).ToList(); foreach (var r in rpgOrderByTops) { if (r.Zuschlaege.Count == 0) { matrix.Add(targetRowIndex, 1, r.Abstellplatz.Top); matrix.Add(targetRowIndex, 2, r.Abstellplatz.Widmung); matrix.Add(targetRowIndex, 5, r.Abstellplatz.Flaeche); matrix.Add(targetRowIndex, 6, "m²"); targetRowIndex++; CopyCells(_SheetAbstell, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); } else { // todo: add sum to sumGes and sumArt matrix.Add(targetRowIndex, 1, r.Abstellplatz.Top); matrix.Add(targetRowIndex, 2, r.Abstellplatz.Widmung); matrix.Add(targetRowIndex, 3, r.Abstellplatz.Flaeche); matrix.Add(targetRowIndex, 4, "m²"); targetRowIndex++; CopyCells(_SheetAbstell, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); var sumZusch = 0.0; foreach (var zuschl in r.Zuschlaege) { var wid = zuschl.Widmung ?? ""; var begrundung = zuschl.Begrundung ?? ""; matrix.Add(targetRowIndex, 2, wid + " " + begrundung); matrix.Add(targetRowIndex, 3, zuschl.Flaeche); matrix.Add(targetRowIndex, 4, "m²"); sumZusch += zuschl.Flaeche; targetRowIndex++; CopyCells(_SheetAbstell, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); } sumArt += sumZusch; sumGes += sumZusch; CopyCells(_SheetAbstell, targetSheet, rowIndex1: 10, colIndex1: 0, rowIndex2: 10, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 1, "Summe"); matrix.Add(targetRowIndex, 2, r.Abstellplatz.Top); matrix.Add(targetRowIndex, 5, r.Abstellplatz.Flaeche + sumZusch); matrix.Add(targetRowIndex, 6, "m²"); targetRowIndex++; CopyCells(_SheetAbstell, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); } } } CopyCells(_SheetAbstell, targetSheet, rowIndex1: 14, colIndex1: 0, rowIndex2: 16, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); targetRowIndex++; matrix.Add(targetRowIndex, 1, "Summe"); matrix.Add(targetRowIndex, 2, art); matrix.Add(targetRowIndex, 5, sumArt); matrix.Add(targetRowIndex, 6, "m²"); targetRowIndex += 2; } targetRowIndex += 2; CopyCells(_SheetAbstell, targetSheet, rowIndex1: 35, colIndex1: 0, rowIndex2: 35, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, "SUMME ALLE PKW ABSTELLPLÄTZE"); matrix.Add(targetRowIndex, 5, sumGes); matrix.Add(targetRowIndex, 6, "m²"); matrix.Write(targetSheet); }
private void WriteAllgemein(int projektId, IProjektInfo pi) { log.Debug("WriteAllgemein"); var targetSheet = GetWorksheet("ALLGEMEIN"); const int MAX_COL_INDEX = 4; // Überschrift PKW ABSTELLPLÄTZE CopyCells(_SheetAllgemein, targetSheet, rowIndex1: 0, colIndex1: 0, rowIndex2: 0, colIndex2: MAX_COL_INDEX, copyColumnWidth: true); // raume var raeume = _Database.GetRaeume(projektId); #if !ALTEVARIANTE List <IRaumRecord> tops, allgs, pkws; SplitRaeume(raeume, out pkws, out tops, out allgs); var allgRaeumePerTop = allgs.GroupBy(x => x.Top).OrderBy(x => x.Key, _TopAllgComparer).ToList(); #else // alte variante var allgRaeumePerTop = raeume.Where(x => IsAllgForSumme(x)).GroupBy(x => x.Top).OrderBy(x => x.Key, _TopAllgComparer).ToList(); #endif int targetRowIndex = 4; var matrix = new ExcelMatrix(startRowIndex: targetRowIndex, nrOfCols: MAX_COL_INDEX + 1); double sumGes = 0.0; foreach (var raumKvp in allgRaeumePerTop) { var art = raumKvp.Key; var topBez = art.Replace("ALLG", ""); if (string.IsNullOrEmpty(topBez)) { topBez = "AUSSENANLAGEN"; } double sumArt = 0.0; CopyCells(_SheetAllgemein, targetSheet, rowIndex1: 4, colIndex1: 0, rowIndex2: 5, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, topBez); targetRowIndex += 2; var perGesch = raumKvp.GroupBy(x => x.Lage).OrderBy(x => x.Key, _GeschossSortComparer); bool firstGesch = true; foreach (var rpg in perGesch) { if (firstGesch) { firstGesch = false; } else { targetRowIndex++; } var geschoss = rpg.Key; var sumProGesch = rpg.Sum(x => x.Flaeche); sumGes += sumProGesch; sumArt += sumProGesch; CopyCells(_SheetAllgemein, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, geschoss); var sortedR = rpg.OrderBy(x => x.Raum); foreach (var r in sortedR) { matrix.Add(targetRowIndex, 2, r.Raum); matrix.Add(targetRowIndex, 3, r.Flaeche); matrix.Add(targetRowIndex, 4, "m²"); targetRowIndex++; CopyCells(_SheetAllgemein, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); } } CopyCells(_SheetAllgemein, targetSheet, rowIndex1: 12, colIndex1: 0, rowIndex2: 14, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); targetRowIndex++; matrix.Add(targetRowIndex, 2, "Summe"); matrix.Add(targetRowIndex, 3, sumArt); matrix.Add(targetRowIndex, 4, "m²"); targetRowIndex += 2; } targetRowIndex += 2; CopyCells(_SheetAllgemein, targetSheet, rowIndex1: 39, colIndex1: 0, rowIndex2: 40, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex); matrix.Add(targetRowIndex, 0, "SUMME ALLER ALLGEMEINFLÄCHEN"); matrix.Add(targetRowIndex, 3, sumGes); matrix.Add(targetRowIndex, 4, "m²"); targetRowIndex++; matrix.Add(targetRowIndex, 0, "nicht für Nutzwert relevant"); matrix.Write(targetSheet); }