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); }
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); }
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); }