예제 #1
0
        private void WriteLeitungsliste(ExcelWorksheet ws, PlanData data)
        {
            var outNodes = data.treeNodeDatas.Values
                           .OfType <TreeNodeDataOut>().ToList();

            int rowNo     = 1;
            int leitungNr = 1;

            ws.Cells[rowNo, 1].Value = "Nr";
            ws.Column(1).Width       = 4;

            ws.Cells[rowNo, 2].Value = "Klemmleiste";
            ws.Column(2).Width       = 5;

            ws.Cells[rowNo, 3].Value = "Klemme";
            ws.Column(3).Width       = 5;

            ws.Cells[rowNo, 4].Value = "L-Nummer";
            ws.Column(4).Width       = 13;

            ws.Cells[rowNo, 5].Value = "Leitungsname";
            ws.Column(5).Width       = 38;

            ws.Cells[rowNo, 6].Value = "Leitungstyp";
            ws.Column(6).Width       = 12;

            ws.Cells[rowNo, 7].Value = "Anz. Adern";
            ws.Column(7).Width       = 3;

            ws.Cells[rowNo, 8].Value = "Querschnitt";
            ws.Column(8).Width       = 4;

            ws.Cells[rowNo, 9].Value = "Leitungstyp";
            ws.Column(9).Width       = 16;

            ws.Cells[rowNo, 10].Value = "Individuelle Leitungsbezeichnung";
            ws.Column(10).Width       = 40;

            rowNo++;
            foreach (var nodeData in outNodes.OrderBy(x => x.KlemmleisteNummer).ThenBy(x => x.klemmenBlockNummer))
            {
                //To set values in the spreadsheet use the Cells indexer.
                ws.Cells[rowNo, 1].Value = leitungNr++;
                ws.Cells[rowNo, 2].Value = nodeData.klemmleiste;
                ws.Cells[rowNo, 3].Value = nodeData.klemmenBlockNummer;
                ws.Cells[rowNo, 4].Value = nodeData.leitungsnummer;
                ws.Cells[rowNo, 5].Value = nodeData.leitungsname;
                ws.Cells[rowNo, 6].Value = nodeData.leitungstyp;
                ws.Cells[rowNo, 7].Value = nodeData.adern.Length;
                ws.Cells[rowNo, 8].Value = nodeData.querschnitt;
                ws.Cells[rowNo, 9].Value = ReihenklemmenCreator.CreateLeitungstypWithQuerschnitt(nodeData);

                if (nodeData.individuelleLeitungsbezeichnungActive)
                {
                    ws.Cells[rowNo, 10].Value = $"{nodeData.leitungsnummer}\n{nodeData.individuelleLeitungsbezeichnung}";
                }

                ++rowNo;
            }
        }
예제 #2
0
 public ExportKlemmlisteCommand(
     string token,
     IEnumerable <string> ids,
     string outputPath,
     Producer producer,
     LeitungstypConfigurationElementCollection configLeitungstypConfigurations)
     : base(token)
 {
     _ids                  = ids;
     _outputPath           = outputPath;
     _reihenklemmenCreator = new ReihenklemmenCreator(configLeitungstypConfigurations, producer.ToString());
 }
 public ExportDataCommandBase(
     string token,
     IEnumerable <string> ids,
     string outputPath,
     string tragschienenKonfiguration,
     LeitungstypConfigurationElementCollection configLeitungstypConfigurations,
     NameValueCollection reihenklemmenCfg)
     : base(token)
 {
     _ids        = ids;
     _outputPath = outputPath;
     _tragschienenKonfiguration = tragschienenKonfiguration;
     _reihenklemmenCreator      = new ReihenklemmenCreator(configLeitungstypConfigurations, "Phoenix");
     _reihenklemmenCfg          = reihenklemmenCfg;
 }
예제 #4
0
        private void WriteKlemmlisteVertikal(ExcelWorksheet ws, PlanData data)
        {
            var outNodes = data.treeNodeDatas.Values
                           .OfType <TreeNodeDataOut>().ToList();

            var gesamtanzahlReihenklemmen          = new Dictionary <string, int>();
            var leitungstypMitQuerschnittStatistik = new Dictionary <string, int>();

            string letzteKlemmleiste       = string.Empty;
            int    rowNo                   = 1;
            int    currentKlemmeNrInLeiste = 0;
            int    leitungNr               = 1;

            ws.Cells[rowNo, 1].Value = "Nr";
            ws.Column(1).Width       = 4;

            ws.Cells[rowNo, 2].Value = "L-Nummer";
            ws.Column(2).Width       = 13;

            ws.Cells[rowNo, 3].Value = "Leitungsname";
            ws.Column(3).Width       = 38;

            ws.Cells[rowNo, 4].Value = "Leitungstyp";
            ws.Column(4).Width       = 13.5;

            ws.Cells[rowNo, 5].Value = "Klemmenleiste";
            ws.Column(5).Width       = 5;

            ws.Cells[rowNo, 6].Value = "Klemme";
            ws.Column(6).Width       = 11;

            ws.Cells[rowNo, 8].Value = "Klemmentyp";
            ws.Column(8).Width       = 11;

            ws.Cells[rowNo, 9].Value = "Beschreibung";
            ws.Column(9).Width       = 28;

            rowNo++;

            foreach (var nodeData in outNodes.OrderBy(x => x.KlemmleisteNummer).ThenBy(x => x.klemmenBlockNummer))
            {
                if (letzteKlemmleiste != nodeData.klemmleiste)
                {
                    currentKlemmeNrInLeiste = 0;

                    // Beim Wechsel der Klemmleiste eine Leerzeile einfügen
                    if (!string.IsNullOrEmpty(letzteKlemmleiste))
                    {
                        ws.Row(rowNo).Height = 10;
                        rowNo++;
                    }
                }
                letzteKlemmleiste = nodeData.klemmleiste;


                var reihenklemmen = _reihenklemmenCreator.CreateReihenklemmen(nodeData, ref currentKlemmeNrInLeiste);

                if (!reihenklemmen.Any())
                {
                    continue;
                }

                var leitungLastRow = rowNo + reihenklemmen.Sum(x => x.Width) - 1;

                // Col1: Nr
                ws.Cells[rowNo, 1].Value = leitungNr++;
                var range = ws.Cells[rowNo, 1, leitungLastRow, 1];
                range.Merge = true;
                range.Style.VerticalAlignment   = ExcelVerticalAlignment.Center;
                range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Left;
                range.Style.Border.BorderAround(ExcelBorderStyle.Thin);

                // Col2: L-Nummer
                ws.Cells[rowNo, 2].Value = $"{nodeData.leitungsnummer}";
                range       = ws.Cells[rowNo, 2, leitungLastRow, 2];
                range.Merge = true;
                range.Style.VerticalAlignment   = ExcelVerticalAlignment.Center;
                range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Left;
                range.Style.Border.BorderAround(ExcelBorderStyle.Thin);


                // Col3: L-Nummer
                ws.Cells[rowNo, 3].Value = $"{nodeData.leitungsname}";
                range       = ws.Cells[rowNo, 3, leitungLastRow, 3];
                range.Merge = true;
                range.Style.VerticalAlignment   = ExcelVerticalAlignment.Center;
                range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Left;
                range.Style.Border.BorderAround(ExcelBorderStyle.Thin);

                // Col4: Leitungstyp
                ws.Cells[rowNo, 4].Value = $"{nodeData.leitungstyp} {nodeData.adern.Length}x{nodeData.querschnitt}";
                range       = ws.Cells[rowNo, 4, leitungLastRow, 4];
                range.Merge = true;
                range.Style.VerticalAlignment   = ExcelVerticalAlignment.Center;
                range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Left;
                range.Style.Border.BorderAround(ExcelBorderStyle.Thin);

                // Col5: Klemmenleiste
                ws.Cells[rowNo, 5].Value = $"{nodeData.klemmleiste}";
                range       = ws.Cells[rowNo, 5, leitungLastRow, 5];
                range.Merge = true;
                range.Style.VerticalAlignment   = ExcelVerticalAlignment.Center;
                range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Left;
                range.Style.Border.BorderAround(ExcelBorderStyle.Thin);

                // Col6: Klemmenblocknummer
                ws.Cells[rowNo, 6].Value = $"{nodeData.klemmenBlockNummer}";
                range       = ws.Cells[rowNo, 6, leitungLastRow, 6];
                range.Merge = true;
                range.Style.VerticalAlignment   = ExcelVerticalAlignment.Center;
                range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Left;
                range.Style.Border.BorderAround(ExcelBorderStyle.Thin);

                for (int idx = 0; idx < reihenklemmen.Count; idx++)
                {
                    var currentKlemme = reihenklemmen[idx];

                    if (!gesamtanzahlReihenklemmen.ContainsKey(currentKlemme.Producer))
                    {
                        gesamtanzahlReihenklemmen[currentKlemme.Producer] = 1;
                    }
                    else
                    {
                        gesamtanzahlReihenklemmen[currentKlemme.Producer] = gesamtanzahlReihenklemmen[currentKlemme.Producer] + 1;
                    }

                    // Col 7: Klemmen
                    var klemme = string.Join(",", reihenklemmen[idx].Klemmen);
                    var row    = rowNo + (idx * reihenklemmen[idx].Width);

                    ws.Cells[row, 7].Value = $"{klemme}";
                    range       = ws.Cells[row, 7, row + reihenklemmen[idx].Width - 1, 7];
                    range.Merge = true;
                    range.Style.VerticalAlignment   = ExcelVerticalAlignment.Center;
                    range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Left;
                    range.Style.Border.BorderAround(ExcelBorderStyle.Thin);

                    // Col 8: Klemmentyp
                    ws.Cells[row, 8].Value = reihenklemmen[idx].Name;
                    range       = ws.Cells[row, 8, row + reihenklemmen[idx].Width - 1, 8];
                    range.Merge = true;
                    range.Style.VerticalAlignment   = ExcelVerticalAlignment.Center;
                    range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Left;
                    range.Style.Fill.PatternType    = ExcelFillStyle.Solid;
                    range.Style.Fill.BackgroundColor.SetColor(reihenklemmen[idx].Color);

                    // Col 9: Beschreibung
                    ws.Cells[row, 9].Value = reihenklemmen[idx].ArticleName;
                    range       = ws.Cells[row, 9, row + reihenklemmen[idx].Width - 1, 98];
                    range.Merge = true;
                    range.Style.VerticalAlignment   = ExcelVerticalAlignment.Center;
                    range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Left;
                    range.Style.Border.BorderAround(ExcelBorderStyle.Thin);
                }

                var leitungstyp = ReihenklemmenCreator.CreateLeitungstypWithQuerschnitt(nodeData);
                if (leitungstypMitQuerschnittStatistik.ContainsKey(leitungstyp))
                {
                    leitungstypMitQuerschnittStatistik[leitungstyp] = ++leitungstypMitQuerschnittStatistik[leitungstyp];
                }
                else
                {
                    leitungstypMitQuerschnittStatistik[leitungstyp] = 1;
                }

                rowNo = leitungLastRow + 1;
            }

            // Statistik Leitungstypen ausgeben
            rowNo += 3;
            WriteLeitungstypMitQuerschnittStatistik(ws, ref rowNo, leitungstypMitQuerschnittStatistik);

            // Statistik Klemmen ausgeben
            rowNo += 3;
            WriteKlemmenStatistik(ws, ref rowNo, gesamtanzahlReihenklemmen);
        }