示例#1
0
        public ActionResult Lifespan()
        {
            var data = _fileRepository.LoadFile <LifeExpectancyModel>("LifeExpectancy.csv");

            var filteredData = data.OrderByDescending(x => x.GetYearsArray().Average())
                               .Take(5).ToList();

            var chart = new ChartData <LineChartDataset>();

            chart.Labels.Add("2010");
            chart.Labels.Add("2011");
            chart.Labels.Add("2012");
            chart.Labels.Add("2013");

            foreach (LifeExpectancyModel element in filteredData)
            {
                var dataset = new LineChartDataset();
                dataset.Label = element.Country;
                dataset.Data.Add(element.Year2010);
                dataset.Data.Add(element.Year2011);
                dataset.Data.Add(element.Year2012);
                dataset.Data.Add(element.Year2013);
                chart.Datasets.Add(dataset);
            }

            var model = new LifespanViewModel();

            ChartHelpers.BreatheColors(chart);

            model.ChartData = SerializationHelpers.ToJson(chart);

            return(View(model));
        }
示例#2
0
        private void ResetChart()
        {
            _drawings = new List <SelectedFigureBase>();

            _zoomArea                = null;
            _selectedDrawing         = null;
            _tempDrawing             = null;
            _drawAdditionChartHelper = null;

            _actions      = DrawingActions.Default;
            _chartHelpers = ChartHelpers.Default;
            _isZoomed     = true;

            SetForChartMinMaxPoints(0);
        }
示例#3
0
        private void ZoomUpChart(int x, int y)
        {
            if (_zoomArea == null)
            {
                _zoomArea = new RectangleFigure(_d2DRenderTarget);
            }

            var isSetted = _zoomArea.SetPosition(new ScreenPoint(x, y));

            if (!isSetted)
            {
                return;
            }

            _chartHelpers = ChartHelpers.Default;
            _isZoomed     = false;
        }
示例#4
0
        public Chart()
        {
            InitializeComponent();

            #region Init

            _resize    = 0;
            _isResized = true;
            _isZoomed  = true;

            _mousePisition = new ScreenPoint();
            _drawings      = new List <SelectedFigureBase>();

            _barType      = BarType.OHLC;
            _actions      = DrawingActions.Default;
            _chartHelpers = ChartHelpers.Default;

            var windowSize = new Size(800, 800);
            SetRenderSettings(windowSize);

            _chart          = new ChartDrawing(ClientSize.Width, ClientSize.Height, _d2DRenderTarget, TimingBy.Minute);
            _chartRendering = new ChartRendering.ChartRendering(_d2DRenderTarget, _textFormat, _chart);
            GenerateBars();
            SetForChartMinMaxPoints(0);

            _borders = new RectangleF(windowSize.Width * _chart.Paddings.PaddingLeftRatio,
                                      windowSize.Height * _chart.Paddings.PaddingTopRatio, _chart.ChartWidth, _chart.ChartHeight);
            #endregion

            #region FormHandlers

            KeyDown    += OnKeyDown;
            MouseDown  += OnMouseDown;
            MouseClick += OnMouseClick;
            MouseWheel += OnMouseWheel;
            MouseMove  += OnMouseMove;
            Resize     += OnResizeEnd;
            Closing    += OnClosing;

            #endregion

            _callback += RenderChart;
            RenderLoop.Run(this, _callback);
        }
        public static List <Profile> MergeProfiles([NotNull][ItemNotNull] List <Profile> profiles)
        {
            Dictionary <string, Profile> mergedProfiles = new Dictionary <string, Profile>();

            foreach (var profile in profiles)
            {
                string newName = ChartHelpers.GetFriendlyProviderName(profile.Name);
                if (!mergedProfiles.ContainsKey(newName))
                {
                    profile.Name = newName;
                    mergedProfiles.Add(newName, profile);
                }
                else
                {
                    mergedProfiles[newName] = mergedProfiles[newName].Add(profile, newName);
                }
            }
            return(mergedProfiles.Values.ToList());
        }
示例#6
0
        public ActionResult ExportChart(long IdModuloActual)
        {
            switch (IdModuloActual)
            {
            case 13010300:
                ChartControlSettings settings = ChartHelpers.GetChartSettings();
                using (MemoryStream stream = new MemoryStream())
                {
                    settings.SaveToStream(stream);
                    stream.Seek(0, SeekOrigin.Begin);
                    WebChartControl chartControl = new WebChartControl();
                    chartControl.LoadFromStream(stream);
                    chartControl.Width      = Convert.ToInt16(settings.Width.Value);
                    chartControl.Height     = Convert.ToInt16(settings.Height.Value);
                    chartControl.DataSource = new DataView(ChartHelpers.GenerateDataIO(Metodos.GetDataGraficoImpactoOperacional()));
                    var pcl = new PrintableComponentLink(new PrintingSystem());
                    pcl.Component = ((IChartContainer)chartControl).Chart;
                    pcl.Landscape = true;
                    pcl.CreateDocument();

                    using (var exstream = new MemoryStream())
                    {
                        pcl.PrintingSystem.ExportToPdf(exstream);
                        byte[] buf = new byte[(int)exstream.Length];
                        exstream.Seek(0, SeekOrigin.Begin);
                        exstream.Read(buf, 0, buf.Length);

                        return(File(buf, "application/pdf", "chart" + Guid.NewGuid().ToString() + ".pdf"));
                    }
                }

            case 13010600:
                //< div id = "multichart" >

                //     < div class="MTD">
                //        <div class="Titulo">
                //            @Html.Raw(Resources.ReporteResource.captionMDTHeader)
                //        </div>
                //        @Html.Partial("GraficoMTDPartialView", Model.DataMTD)
                //    </div>
                //    <div class="RPO">
                //        <div class="Titulo">
                //            @Html.Raw(Resources.ReporteResource.captionRPOHeader)
                //        </div>
                //        @Html.Partial("GraficoRPOPartialView", Model.DataRPO)
                //    </div>
                //    <div class="RTO">
                //        <div class="Titulo">
                //            @Html.Raw(Resources.ReporteResource.captionRTOHeader)
                //        </div>
                //        @Html.Partial("GraficoRTOPartialView", Model.DataRTO)
                //    </div>
                //    <div class="WRT">
                //        <div class="Titulo">
                //            @Html.Raw(Resources.ReporteResource.captionWRTHeader)
                //        </div>
                //        @Html.Partial("GraficoWRTPartialView", Model.DataWRT)
                //    </div>
                //</div>
                break;

            case 13010900:
                //chartControl.DataSource = new DataView(ChartHelpers.GenerateDataIO(Metodos.GetNroProcesosByImpactoOperacional()));
                break;
            }
            return(null);
        }
        private void btnExport_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            // sample 1
            // ChartHelpers.SaveToPng(chartProductivity, "chart.png");

            // https://tedgustaf.com/blog/2012/create-excel-20072010-spreadsheets-with-c-and-epplus/
            // sample 2
            var currentDate = DateTime.Now;

            // Set the file name and get the output directory
            var fileName      = "Report-" + currentDate.ToString("yyyy-MM-dd--hh-mm-ss") + ".xlsx";
            var baseDirectory = @"C:\" + Constants.ApplicationName + @"\reports\";
            var filePath      = Path.Combine(baseDirectory, fileName);

            try
            {
                var mainWindow = (MainWindow)Application.Current.MainWindow;

                if (!Directory.Exists(baseDirectory))
                {
                    Directory.CreateDirectory(baseDirectory);
                }

                // Create the file using the FileInfo object
                var file = new FileInfo(filePath);

                // find all charts and grids
                var grids  = CommonHelpers.FindVisualChildren <DataGrid>(mainWindow).ToList();
                var charts = CommonHelpers.FindVisualChildren <CartesianChart>(mainWindow).ToList();

                // Create the package and make sure you wrap it in a using statement
                using (var package = new ExcelPackage(file))
                {
                    // add a new worksheet to the empty workbook
                    ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Productivity - " + currentDate.ToShortDateString());

                    // --------- Data and styling goes here -------------- //
                    var rowIndex              = 1;
                    var pixelTop              = 0d;
                    var pixelLeft             = 0;
                    var chartHeight           = 300;
                    var rowHeight             = 39;
                    var calculatedChartHeight = CommonHelpers.GetHeight(chartHeight);
                    var calculatedRowHeight   = CommonHelpers.GetHeight(rowHeight);
                    foreach (var chartVM in ChartViewModels)
                    {
                        var chart = charts.Where(x => x.Tag != null && x.Tag.ToString() == chartVM.ChartName).FirstOrDefault();
                        if (chart != null)
                        {
                            worksheet.Row(rowIndex).Height = calculatedChartHeight;

                            var imageChart = ChartHelpers.ChartToImage(chart, chart.ActualWidth, chart.ActualHeight);
                            var picture    = worksheet.Drawings.AddPicture(chartVM.ChartName, imageChart);

                            int intPixelTop = (int)pixelTop;
                            picture.SetPosition(intPixelTop, pixelLeft);
                            //picture.SetSize(Height, Width);

                            pixelTop += calculatedChartHeight;
                            rowIndex++;
                        }

                        var grid = grids.Where(x => x.Tag != null && x.Tag.ToString() == chartVM.GridName).FirstOrDefault();
                        if (grid != null)
                        {
                            for (int i = 0; i < grid.Columns.Count; i++)
                            {
                                var header = grid.Columns[i].Header != null ? grid.Columns[i].Header.ToString() : string.Empty;
                                worksheet.Cells[rowIndex, i + 1].Value = header;
                            }

                            //worksheet.Row(rowIndex).Height = calculatedRowHeight;
                            pixelTop += rowHeight;
                            rowIndex++;

                            for (int i = 0; i < grid.Items.Count; i++)
                            {
                                for (int j = 0; j < grid.Columns.Count; j++)
                                {
                                    //loop throught cell
                                    DataGridCell cell = CommonHelpers.GetCell(grid, i, j);
                                    if (cell != null)
                                    {
                                        if (cell.Content is TextBlock)
                                        {
                                            TextBlock tb = cell.Content as TextBlock;
                                            worksheet.Cells[rowIndex, j + 1].Value = tb.Text;
                                        }
                                    }
                                }
                                //worksheet.Row(rowIndex).Height = calculatedRowHeight;
                                pixelTop += rowHeight;
                                rowIndex++;
                            }
                        }
                    }

                    // var img = System.Drawing.Image.FromFile(@"D:\pics\success.jpg"); // testing ok
                    // var pic = worksheet.Drawings.AddPicture("Sample", img);

                    // end
                    package.Save();
                }

                MessageBox.Show("Successfully exported report " + fileName, Constants.ApplicationName, MessageBoxButton.OK, MessageBoxImage.Information);
            }
            catch (Exception ex)
            {
                var msg = ex.GetAllExceptionInfo();
                log.Error(msg, ex);
                MessageBox.Show("Cannot export report", Constants.ApplicationName, MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
        public async Task <OperationDataResult <List <CommonDictionaryModel> > > GetFilterAnswers(DashboardItemAnswerRequestModel requestModel)
        {
            try
            {
                var core = await _coreHelper.GetCore();

                using (var sdkContext = core.DbContextHelper.GetDbContext())
                {
                    var languages = await sdkContext.Languages.ToListAsync();

                    var  answersResult    = new List <CommonDictionaryModel>();
                    bool isSmileyQuestion = false;
                    foreach (var language in languages)
                    {
                        isSmileyQuestion = await sdkContext.Questions
                                           .Where(x => x.Id == requestModel.FilterQuestionId)
                                           .Select(x => x.IsSmiley())
                                           .FirstOrDefaultAsync();

                        // TODO take by language
                        var answers = await sdkContext.Options
                                      .AsNoTracking()
                                      .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                                      .Where(x => x.QuestionId == requestModel.FilterQuestionId)
                                      .Select(x => new CommonDictionaryModel()
                        {
                            Id   = x.Id,
                            Name = x.OptionTranslationses
                                   .Where(qt => qt.WorkflowState != Constants.WorkflowStates.Removed)
                                   .Where(qt => qt.Language.Id == language.Id)
                                   .Select(qt => qt.Name)
                                   .FirstOrDefault(),
                        }).ToListAsync();

                        if (answers.Any())
                        {
                            answersResult.AddRange(answers);
                            break;
                        }
                    }

                    if (isSmileyQuestion)
                    {
                        var result = new List <CommonDictionaryModel>();

                        foreach (var dictionaryModel in answersResult)
                        {
                            result.Add(new CommonDictionaryModel
                            {
                                Id          = dictionaryModel.Id,
                                Name        = ChartHelpers.GetSmileyLabel(dictionaryModel.Name),
                                Description = dictionaryModel.Description,
                            });
                        }

                        return(new OperationDataResult <List <CommonDictionaryModel> >(
                                   true,
                                   result));
                    }


                    return(new OperationDataResult <List <CommonDictionaryModel> >(
                               true,
                               answersResult));
                }
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                _logger.LogError(e.Message);
                return(new OperationDataResult <List <CommonDictionaryModel> >(false,
                                                                               _localizationService.GetString("ErrorWhileObtainingAnswers")));
            }
        }
示例#9
0
        private void KeyKeyboardChecker(Keys key)
        {
            switch (key)
            {
            case Keys.Escape:
            {
                _renderForm.Close();
                this.Hide();
                this.Close();
                break;
            }

            case Keys.D1:
            {
                if (_barType != BarType.Candle)
                {
                    _barType = BarType.Candle;

                    SetForChartMinMaxPoints(_barRendering.Skip);

                    _barRendering = new BarCandle(_d2DRenderTarget, _barRendering.Bars, _chart, _barRendering.Skip);
                    break;
                }
                break;
            }

            case Keys.D2:
            {
                if (_barType != BarType.OHLC)
                {
                    _barType = BarType.OHLC;

                    SetForChartMinMaxPoints(_barRendering.Skip);

                    _barRendering = new BarOHLC(_d2DRenderTarget, _barRendering.Bars, _chart, _barRendering.Skip);
                    break;
                }
                break;
            }

            case Keys.Q:
            {
                if (_chartHelpers != ChartHelpers.Net)
                {
                    _chartHelpers = ChartHelpers.Net;

                    _drawAdditionChartHelper = DrawNet;

                    break;
                }
                _drawAdditionChartHelper -= DrawNet;

                _chartHelpers = ChartHelpers.Default;
                break;
            }

            case Keys.W:
            {
                if (_chartHelpers != ChartHelpers.Lines)
                {
                    _chartHelpers = ChartHelpers.Lines;

                    _drawAdditionChartHelper = DrawLines;
                    break;
                }

                _drawAdditionChartHelper -= DrawLines;
                _chartHelpers             = ChartHelpers.Default;
                break;
            }

            case Keys.E:
            {
                if (_actions != DrawingActions.LineDrawing)
                {
                    _actions     = DrawingActions.LineDrawing;
                    _tempDrawing = new LineFigure(_d2DRenderTarget);
                    break;
                }

                _tempDrawing = null;
                _actions     = DrawingActions.Default;
                break;
            }

            case Keys.R:
            {
                if (_actions != DrawingActions.RectangleDrawing)
                {
                    _tempDrawing = new RectangleFigure(_d2DRenderTarget);
                    _actions     = DrawingActions.RectangleDrawing;
                    break;
                }

                _tempDrawing = null;
                _actions     = DrawingActions.Default;
                break;
            }

            case Keys.T:
            {
                if (_actions != DrawingActions.EllipseDrawing)
                {
                    _tempDrawing = new EllipseFigure(_d2DRenderTarget);
                    _actions     = DrawingActions.EllipseDrawing;
                    break;
                }

                _tempDrawing = null;
                _actions     = DrawingActions.Default;
                break;
            }

            case Keys.A:
            {
                if (_actions != DrawingActions.StraightLineXDrawing)
                {
                    _actions = DrawingActions.StraightLineXDrawing;
                    break;
                }

                _actions = DrawingActions.Default;
                break;
            }

            case Keys.S:
            {
                if (_actions != DrawingActions.StraightLineYDrawing)
                {
                    _actions = DrawingActions.StraightLineYDrawing;
                    break;
                }

                _actions = DrawingActions.Default;
                break;
            }

            case Keys.Z:
            {
                if (_chartHelpers != ChartHelpers.Zoom)
                {
                    _zoomArea     = null;
                    _chartHelpers = ChartHelpers.Zoom;
                    break;
                }

                _chartHelpers = ChartHelpers.Default;
                break;
            }

            case Keys.Delete:
            {
                RemoveFigure();
                break;
            }

            case Keys.C:
            {
                _chart.ChangeColor();
                break;
            }

            case Keys.Enter:
            {
                ResetChart();
                break;
            }
            }
        }
示例#10
0
        protected override void RunActualProcess([NotNull][ItemNotNull] List <ScenarioSliceParameters> allSlices,
                                                 [NotNull] AnalysisRepository analysisRepo)
        {
            Info("starting to make trafostation results");
            MultiyearMultiVariableTrend myt = new MultiyearMultiVariableTrend();

            foreach (var slice in allSlices)
            {
                var dbArchive =
                    Services.SqlConnectionPreparer.GetDatabaseConnection(Stage.ProfileGeneration, slice, DatabaseCode.SummedLoadForAnalysis);
                var saHouses = SaveableEntry <ArchiveEntry> .GetSaveableEntry(dbArchive,
                                                                              SaveableEntryTableType.SummedLoadsForAnalysis,
                                                                              Services.Logger);

                var entries          = saHouses.LoadAllOrMatching();
                var providerentries1 = entries.Where(x => x.Key.SumType == SumType.ByProvider).ToList();

                double electricitySum = 0;
                foreach (var entry in providerentries1)
                {
                    if (entry.GenerationOrLoad == GenerationOrLoad.Generation)
                    {
                        continue;
                    }

                    double energy       = entry.Profile.EnergySum();
                    string providertype = (entry.Key.ProviderType ?? throw new FlaException("No provider set")) + " " + entry.GenerationOrLoad;
                    Info("Providertype: " + providertype);
                    electricitySum += energy;
                }

                HouseComponentRepository hcr = new HouseComponentRepository(analysisRepo, slice);
                var houses = analysisRepo.GetSlice(slice).Fetch <House>();
                Dictionary <string, double> loadPerEnergyType = new Dictionary <string, double>();
                Dictionary <string, double> genPerEnergyType  = new Dictionary <string, double>();
                foreach (var house in houses)
                {
                    var components = house.CollectHouseComponents(hcr);
                    foreach (var component in components)
                    {
                        if (component.HausAnschlussGuid == null)
                        {
                            continue;
                        }

                        string energyType = component.EnergyType.ToString();
                        if (component.GenerationOrLoad == GenerationOrLoad.Load)
                        {
                            if (!loadPerEnergyType.ContainsKey(energyType))
                            {
                                loadPerEnergyType.Add(energyType, 0);
                            }

                            loadPerEnergyType[energyType] += component.EffectiveEnergyDemand;
                        }
                        else if (component.GenerationOrLoad == GenerationOrLoad.Generation)
                        {
                            if (!genPerEnergyType.ContainsKey(energyType))
                            {
                                genPerEnergyType.Add(energyType, 0);
                            }

                            genPerEnergyType[energyType] += component.EffectiveEnergyDemand;
                        }
                        else
                        {
                            throw new FlaException("invalid type");
                        }
                    }
                }

                foreach (var pair in loadPerEnergyType)
                {
                    if (pair.Key == "Strom")
                    {
                        myt[slice].AddValue("Jahresenergiebedarf [GWh]",
                                            ChartHelpers.GetFriendlyEnergTypeName(pair.Key),
                                            electricitySum,
                                            DisplayUnit.GWh);
                    }
                    else
                    {
                        myt[slice].AddValue("Jahresenergiebedarf [GWh]",
                                            ChartHelpers.GetFriendlyEnergTypeName(pair.Key),
                                            pair.Value,
                                            DisplayUnit.GWh);
                    }
                }

                foreach (var pair in genPerEnergyType)
                {
                    if (pair.Key == "Strom")
                    {
                        myt[slice].AddValue("GenerationPerEnergyType",
                                            ChartHelpers.GetFriendlyEnergTypeName(pair.Key),
                                            electricitySum,
                                            DisplayUnit.GWh);
                    }
                    else
                    {
                        myt[slice].AddValue("GenerationPerEnergyType", ChartHelpers.GetFriendlyEnergTypeName(pair.Key), pair.Value, DisplayUnit.GWh);
                    }
                }
            }

            var filename3 = MakeAndRegisterFullFilename("EnergieProEnergieträger.xlsx", Constants.PresentSlice);

            Info("Writing results to " + filename3);
            XlsxDumper.DumpMultiyearMultiVariableTrendToExcel(filename3, myt);
            SaveToPublicationDirectory(filename3, Constants.PresentSlice, "5");
        }
示例#11
0
        protected override void RunActualProcess([NotNull][ItemNotNull] List <ScenarioSliceParameters> allSlices, [NotNull] AnalysisRepository analysisRepo)
        {
            List <ScenarioSliceParameters> missingSlices = new List <ScenarioSliceParameters>();

            foreach (var slice in allSlices)
            {
                Info("Checking for slice " + slice);
                var db = Services.SqlConnectionPreparer.GetDatabaseConnection(Stage.ProfileGeneration, slice);
                var fi = new FileInfo(db.DBFilename);
                if (!fi.Exists)
                {
                    missingSlices.Add(slice);
                }
            }
            if (missingSlices.Count > 0)
            {
                var    missingSliceNames = missingSlices.Select(x => x.ToString()).ToList();
                string missingSlicesStr  = string.Join("\n", missingSliceNames);
                throw new FlaException("Missing Profile Slices: " + missingSlicesStr);
            }

            Info("starting to make trafostation results");
            MultiyearMultiVariableTrend mytProviders  = new MultiyearMultiVariableTrend();
            MultiyearMultiVariableTrend mytComponents = new MultiyearMultiVariableTrend();

            foreach (var slice in allSlices)
            {
                var dbArchive = Services.SqlConnectionPreparer.GetDatabaseConnection(Stage.ProfileGeneration, slice, DatabaseCode.SummedLoadForAnalysis);
                var saHouses  = SaveableEntry <ArchiveEntry> .GetSaveableEntry(dbArchive, SaveableEntryTableType.SummedLoadsForAnalysis, Services.Logger);

                var entries          = saHouses.LoadAllOrMatching();
                var providerentries1 = entries.Where(x => x.Key.SumType == SumType.ByProvider).ToList();
                providerentries1.Sort((x, y) => String.Compare(x.Key.ProviderType, y.Key.ProviderType, StringComparison.Ordinal));
                Dictionary <Tuple <string, GenerationOrLoad>, double> energyByName = new Dictionary <Tuple <string, GenerationOrLoad>, double>();
                foreach (var entry in providerentries1)
                {
                    double energy       = entry.Profile.EnergySum();
                    string providertype = (entry.Key.ProviderType ?? throw new FlaException("No provider set")) + " " + entry.GenerationOrLoad;
                    Info("Providertype: " + providertype);
                    var friendlyName = ChartHelpers.GetFriendlyProviderName(providertype);
                    var key          = new Tuple <string, GenerationOrLoad>(friendlyName, entry.GenerationOrLoad);
                    if (!energyByName.ContainsKey(key))
                    {
                        energyByName.Add(key, 0);
                    }
                    energyByName[key] += energy;
                }

                foreach (var pair in energyByName)
                {
                    if (pair.Key.Item2 == GenerationOrLoad.Load)
                    {
                        mytProviders[slice].AddValue("Stromlast [GWh]", pair.Key.Item1, pair.Value, DisplayUnit.GWh);
                    }
                    else
                    {
                        mytProviders[slice].AddValue("Erzeugung [GWh]", pair.Key.Item1, pair.Value, DisplayUnit.GWh);
                    }
                }

                var componentEntries = entries.Where(x => x.Key.SumType == SumType.ByHouseholdComponentType).ToList();
                componentEntries.Sort((x, y) => String.Compare(x.Key.HouseComponentType, y.Key.HouseComponentType, StringComparison.Ordinal));
                foreach (var entry in componentEntries)
                {
                    double energy             = entry.Profile.EnergySum();
                    string houseComponentType = entry.Key.HouseComponentType ?? throw new FlaException("No provider set");
                    Info("HouseComponentType: " + houseComponentType);
                    if (entry.Key.GenerationOrLoad == GenerationOrLoad.Load)
                    {
                        mytComponents[slice].AddValue("ComponentLoad", houseComponentType, energy, DisplayUnit.GWh);
                    }
                    else
                    {
                        mytComponents[slice].AddValue("ComponentGeneration", houseComponentType, energy, DisplayUnit.GWh);
                    }
                }
            }
            var filename3 = MakeAndRegisterFullFilename("EnergieProVerbraucher.xlsx", Constants.PresentSlice);

            Info("Writing results to " + filename3);
            XlsxDumper.DumpMultiyearMultiVariableTrendToExcel(filename3, mytProviders);
            SaveToPublicationDirectory(filename3, Constants.PresentSlice, "5");
            var filename4 = MakeAndRegisterFullFilename("ComponentProfileEnergyCharts.xlsx", Constants.PresentSlice);

            Info("Writing results to " + filename4);
            XlsxDumper.DumpMultiyearMultiVariableTrendToExcel(filename4, mytComponents);
            SaveToArchiveDirectory(filename4, RelativeDirectory.Report, Constants.PresentSlice);
        }