From f162bc7cad24253dc2ef12bf9a5259eee82a1091 Mon Sep 17 00:00:00 2001 From: Damian Wessels Date: Sat, 24 Aug 2024 11:28:21 +0200 Subject: [PATCH] Excelexporter erweitert --- Schnittstelle/Export/Excel.cs | 55 ++++++++++++++++++++++++++++++----- 1 file changed, 48 insertions(+), 7 deletions(-) diff --git a/Schnittstelle/Export/Excel.cs b/Schnittstelle/Export/Excel.cs index ee76b8e..a13cffe 100644 --- a/Schnittstelle/Export/Excel.cs +++ b/Schnittstelle/Export/Excel.cs @@ -21,24 +21,41 @@ namespace Schnittstelle.Export application.DefaultVersion = ExcelVersion.Xlsx; IWorkbook workbook = application.Workbooks.Create(KanalObjekte.Count); - IStyle CellStyle = workbook.Styles.Add("HeaderStyle"); + IStyle CellStyle = workbook.Styles.Add("MainStyle"); CellStyle.Borders[ExcelBordersIndex.EdgeLeft].LineStyle = ExcelLineStyle.Thin; CellStyle.Borders[ExcelBordersIndex.EdgeRight].LineStyle = ExcelLineStyle.Thin; CellStyle.Borders[ExcelBordersIndex.EdgeTop].LineStyle = ExcelLineStyle.Thin; CellStyle.Borders[ExcelBordersIndex.EdgeBottom].LineStyle = ExcelLineStyle.Thin; + + IStyle HeaderStyle = workbook.Styles.Add("HeaderStyle"); + + HeaderStyle.Borders[ExcelBordersIndex.EdgeLeft].LineStyle = ExcelLineStyle.Thin; + HeaderStyle.Borders[ExcelBordersIndex.EdgeRight].LineStyle = ExcelLineStyle.Thin; + HeaderStyle.Borders[ExcelBordersIndex.EdgeTop].LineStyle = ExcelLineStyle.Thin; + HeaderStyle.Borders[ExcelBordersIndex.EdgeBottom].LineStyle = ExcelLineStyle.Thin; + HeaderStyle.Font.Bold = true; + + IStyle KodierungEnde = workbook.Styles.Add("KodierungEndestyleStyle"); + + KodierungEnde.Borders[ExcelBordersIndex.EdgeLeft].LineStyle = ExcelLineStyle.Thin; + KodierungEnde.Borders[ExcelBordersIndex.EdgeRight].LineStyle = ExcelLineStyle.Thin; + KodierungEnde.Borders[ExcelBordersIndex.EdgeTop].LineStyle = ExcelLineStyle.Thin; + KodierungEnde.Borders[ExcelBordersIndex.EdgeBottom].LineStyle = ExcelLineStyle.Thick; + + for (int i = 0; i < KanalObjekte.Count; i++) { IWorksheet worksheet = workbook.Worksheets[i]; KanalObjekt k = KanalObjekte[i]; - CalculateHaltung(k, worksheet, sanierungsarten , CellStyle); + CalculateHaltung(k, worksheet, sanierungsarten, CellStyle, HeaderStyle, KodierungEnde); } FileStream stream = new FileStream("beurteilung.xlsx", FileMode.Create, FileAccess.ReadWrite); workbook.SaveAs(stream); stream.Dispose(); } - private static void CalculateHaltung(KanalObjekt haltung, IWorksheet worksheet, List sanierungsarten, IStyle cellStyle) + private static void CalculateHaltung(KanalObjekt haltung, IWorksheet worksheet, List sanierungsarten, IStyle cellStyle, IStyle headerStyle, IStyle kodierungEnde) { worksheet.Name = string.Format("{0}", haltung.Stammdaten.Objektbezeichnung); @@ -66,12 +83,14 @@ namespace Schnittstelle.Export worksheet.Range[row, 9].Text = haltung.Inspektionsdaten.OptischeInspektion[0].Rohrleitung.Grunddaten.Profilbreite.ToString(); worksheet.Range[row, 10].Text = haltung.Inspektionsdaten.OptischeInspektion[0].Rohrleitung.Grunddaten.Material.ToString(); - worksheet.Range[mainrow,1,row,10].CellStyle = cellStyle; + worksheet.Range[mainrow, 1, mainrow, 10].CellStyle = headerStyle; + worksheet.Range[row,1,row,10].CellStyle = cellStyle; + row += 2; worksheet.Range[row, 2].Text = sanArt.Sanierungsbezeichnung; row+= 2; - int temprow = row; + //int temprow = row; worksheet.Range[row, 1].Text = "Stat"; worksheet.Range[row, 2].Text = "Kürzel"; worksheet.Range[row, 3].Text = "Charakterisierung"; @@ -83,7 +102,10 @@ namespace Schnittstelle.Export worksheet.Range[row, 9].Text = "Sanierung"; worksheet.Range[row, 10].Text = "Kosten"; + worksheet.Range[row, 1, row,10].CellStyle=headerStyle; + row++; + int temprow = row; int codestart_row = row; //int rows = 7; decimal inspizierteLaenge = 0m; @@ -127,35 +149,54 @@ namespace Schnittstelle.Export row++; } } - worksheet.Range[temprow, 1, row, 10].CellStyle = cellStyle; + worksheet.Range[temprow, 1, row-1, 10].CellStyle = cellStyle; + worksheet.Range[row-1, 1, row-1, 10].CellStyle = kodierungEnde; temprow = row; worksheet.Range[row, 7].Text = "Zwischensumme"; worksheet.Range[row, 10].Formula = string.Format("=SUM(J{0}:J{1})", codestart_row, row-1); row++; worksheet.Range[row, 7].Text = "Baustelleneinrichtung"; //10% + worksheet.Range[row, 8].Number = 10; + worksheet.Range[row, 10].Formula = string.Format("=(H{0}/100)*J{1}", row, temprow); row++; worksheet.Range[row, 7].Text = "Verkehrssicherung"; // 5% + worksheet.Range[row, 8].Number = 5; + worksheet.Range[row, 10].Formula = string.Format("=(H{0}/100)*J{1}", row, temprow); row++; worksheet.Range[row, 7].Text = "Aufrechterhaltung der Vorflut"; // 12% + worksheet.Range[row, 8].Number = 12; + worksheet.Range[row, 10].Formula = string.Format("=(H{0}/100)*J{1}", row, temprow); row++; worksheet.Range[row, 7].Text = "Kanalreinigung"; // 2€ /m + worksheet.Range[row, 8].Number = Convert.ToDouble(inspizierteLaenge); + worksheet.Range[row, 9].Number = 2; + worksheet.Range[row, 10].Formula = string.Format("=H{0}*I{0}", row); row++; worksheet.Range[row, 7].Text = "Kamerainspektion"; // 3€ /m + worksheet.Range[row, 8].Number = Convert.ToDouble(inspizierteLaenge); + worksheet.Range[row, 9].Number = 3; + worksheet.Range[row, 10].Formula = string.Format("=H{0}*I{0}", row); row++; worksheet.Range[row, 7].Text = "Reinigung verstopfter Abzweiger"; //250€ + worksheet.Range[row, 9].Number = 250; + worksheet.Range[row, 10].Formula = string.Format("=H{0}*I{0}", row); row++; worksheet.Range[row, 7].Text = "Summe netto"; + worksheet.Range[row, 10].Formula = string.Format("=SUM(J{0}:J{1})",temprow,row-1); row++; worksheet.Range[row, 7].Text = "Mehrwertsteuer"; // 19% + worksheet.Range[row, 8].Number = 19; + worksheet.Range[row, 10].Formula = string.Format("=(H{0}/100)*J{1}",row,row-1); row++; worksheet.Range[row, 7].Text = "Summe brutto"; + worksheet.Range[row, 10].Formula = string.Format("=SUM(J{0}:J{1})", row - 1, row - 2); worksheet.Range[temprow, 7, row, 10].CellStyle = cellStyle; worksheet.Range[mainrow+1, 4].Text = inspizierteLaenge.ToString(); - row += 5; } + worksheet.UsedRange.AutofitColumns(); } } }