コード例 #1
0
        void AppendRowDividendiToSheet(IXLWorksheet sheet, int rowIndex, BinckRow importo)
        {
            var row = sheet.Row(rowIndex);

            row.Cell("A").Value = importo.Simbolo;
            row.Cell("B").Value = importo.Descrizione;
            row.Cell("C").Value = importo.Data;
            row.Cell("D").Value = Math.Round(importo.ImportoEuro, 2);
            row.Cell("E").Value = Math.Round(importo.Importo, 2);
            row.Cell("F").Value = Math.Round(importo.Cambio_EUR_Valuta, 2);
        }
コード例 #2
0
        void AppendRowTotaleToSheet(IXLWorksheet sheet, int rowIndex, BinckRow importo)
        {
            var row = sheet.Row(rowIndex);

            row.Cell("A").Value = importo.Numero;
            row.Cell("B").Value = importo.Tipologia;

            row.Cell("C").Value = importo.Simbolo;
            row.Cell("D").Value = importo.Descrizione;
            row.Cell("E").Value = importo.Data;
            row.Cell("F").Value = Math.Round(importo.ImportoEuro, 2);
            row.Cell("G").Value = Math.Round(importo.Importo, 2);
            row.Cell("H").Value = Math.Round(importo.Cambio_EUR_Valuta, 2);

            row.Cell("I").Value = Math.Round(importo.SaldoAttuale, 2);
        }
コード例 #3
0
        public async Task <string> ElaboraDividendi(string folder)
        {
            //folder = @"E:\Skydrive\Documents\Finanze\Investimenti\Dividendi Bink\";
            string outputFile = Path.Combine(folder, AggregatoFileName);

            var tuttiImporti = new HashSet <BinckRow>();
            var titoli       = CaricaTitoli(folder);

            foreach (var file in Directory.EnumerateFiles(folder, "*.xlsx", SearchOption.AllDirectories))
            {
                if (Path.GetExtension(file).ToUpper() != ".XLSX")
                {
                    continue;
                }
                if (Path.GetFileName(file).Equals(SimboliFileName))
                {
                    continue;
                }
                if (Path.GetFileName(file).Equals(AggregatoFileName))
                {
                    continue;
                }

                using (var sourceFile = new XLWorkbook(file))
                {
                    foreach (var ws in sourceFile.Worksheets)
                    {
                        var lastRow = ws.LastRowUsed();
                        var importi = ws.Rows(4, lastRow.RowNumber()).Select(r => BinckRow.TryParse(r)).ToArray();

                        foreach (var importo in importi)
                        {
                            //var rates = await GetCambioEUR_USDInData(httpClient, importo.DataValuta);
                            //importo.ConvertiInEuro(rates);
                            //importo.CaricaSimbolo(titoli);

                            tuttiImporti.Add(importo);
                        }
                    }
                }
            }


            var dividendi = tuttiImporti.Where(r => r.Tipologia == "Pagamento dividendi").ToArray();

            await CSRakowski.Parallel.ParallelAsync.ForEachAsync(dividendi.GroupBy(r => r.Data), async importi =>
            {
                var rates = await GetCambioEUR_USDInData(httpClient, importi.Key);

                foreach (var importo in importi)
                {
                    importo.ConvertiInEuro(rates);
                    importo.CaricaSimbolo(titoli);
                }
            });

            using (var sourceFile = new XLWorkbook())
            {
                foreach (var importiAnno in dividendi.GroupBy(r => r.Data.Year))
                {
                    var sheetAnno = sourceFile.AddWorksheet(importiAnno.Key.ToString());

                    AddHeaderDividendiToSheet(sheetAnno);

                    var rowIndexAnno = 2;
                    foreach (var importo in importiAnno)
                    {
                        AppendRowDividendiToSheet(sheetAnno, rowIndexAnno, importo);
                        rowIndexAnno++;
                    }
                }

                var sheetTotaleDividendi = sourceFile.AddWorksheet("Dividendi");
                AddHeaderDividendiToSheet(sheetTotaleDividendi);

                var rowIndexDividendi = 2;
                foreach (var importo in dividendi.OrderBy(r => r.Data))
                {
                    AppendRowDividendiToSheet(sheetTotaleDividendi, rowIndexDividendi, importo);
                    rowIndexDividendi++;
                }


                var sheetTutto = sourceFile.AddWorksheet("Tutto");
                AddHeaderTotaleToSheet(sheetTutto);

                var rowIndexTotale = 2;
                foreach (var importo in tuttiImporti.OrderBy(r => r.Data))
                {
                    AppendRowTotaleToSheet(sheetTutto, rowIndexTotale, importo);
                    rowIndexTotale++;
                }
                sourceFile.SaveAs(outputFile);
            }

            return(outputFile);
        }