예제 #1
0
        public void createMonthYearSummaryExcel()
        {
            ExcelWorksheet workSheet;
            ExcelWorksheet workSheet2;

            using (Stream AccountMovmentStream = GetAssemblyFile("Transactions.xlsx"))
            {
                workSheet = ExcelServices.GetExcelWorksheet(AccountMovmentStream, "Felles");
            }
            using (Stream SubCategoriesStream = GetAssemblyFile("Categories.xlsx"))
            {
                workSheet2 = ExcelServices.GetExcelWorksheet(SubCategoriesStream);
            }

            var subCategoriesjArray  = JArray.Parse(ExcelServices.GetJsonFromTable(workSheet2));
            var accountMovmentjArray = JArray.Parse(ExcelServices.GetJsonFromTable(workSheet));
            List <SubCategory>     categorisModel   = ModelClassServices.GetSubCategoriesFromJarray(subCategoriesjArray);
            IEnumerable <string>   categoryList     = categorisModel.Select(cat => cat.Category).Distinct();
            List <AccountMovement> accountMovements = ModelClassServices.GetAccountMovmentsFromJarray(accountMovmentjArray);

            var modementsViewModels = ModelClassServices.CreateMovementsViewModels(accountMovements, categorisModel, "Felles");

            var excelPkg = new ExcelPackage();

            try
            {
                //Add excel sheet
                ExcelWorksheet wsSheet = excelPkg.Workbook.Worksheets.Add("MonthResume");

                //Add Table Title
                ExcelServices.AddSheetHeading(wsSheet, "TableName");

                // Add "input" and "output" headet to Excel table
                //ExcelServices.AddTableHeadings(wsSheet, new[] { "col1", "col2", "col3" }, subCategoriesjArray.Count+ accountMovmentjArray.Count);

                //Add transactions to excel Sheet
                ExcelServices.CreateExcelMonthSummaryTableFromMovementsViewModel(modementsViewModels, wsSheet, categoryList, 0, null, true);
                //ExcelServices.CreateExcelTableFromMovementsViewModel(modementsViewModels, wsSheet, "TableName", categoryList);
            }
            catch (Exception e)
            {
                var noko = e.Message;
            }
            var filename = "MonthResumeTests";
            var path     = string.Concat(@"h:\temp\");

            Directory.CreateDirectory(path);
            var filePath = Path.Combine(path, string.Concat(filename, ".xlsx"));

            excelPkg?.SaveAs(new FileInfo(filePath));

            File.Exists(filePath).Should().BeTrue();
        }
예제 #2
0
        public void createMovementsExcel()
        {
            Stream SubCategoriesStream  = GetAssemblyFile("Categories.xlsx");
            Stream AccountMovmentStream = GetAssemblyFile("Transactions.xlsx");

            ExcelWorksheet workSheet  = ExcelServices.GetExcelWorksheet(AccountMovmentStream, "Felles");
            ExcelWorksheet workSheet2 = ExcelServices.GetExcelWorksheet(SubCategoriesStream);

            var subCategoriesjArray                 = JArray.Parse(ExcelServices.GetJsonFromTable(workSheet2));
            var accountMovmentjArray                = JArray.Parse(ExcelServices.GetJsonFromTable(workSheet));
            List <SubCategory>     subCategories    = ModelClassServices.GetSubCategoriesFromJarray(subCategoriesjArray);
            List <AccountMovement> accountMovements = ModelClassServices.GetAccountMovmentsFromJarray(accountMovmentjArray);

            var modementsViewModels = ModelClassServices.CreateMovementsViewModels(accountMovements, subCategories, "Felles");

            var excelPkg = new ExcelPackage();

            try
            {
                ExcelWorksheet wsSheet = excelPkg.Workbook.Worksheets.Add("fellesResum");
                //Add Table Title
                new ExcelServices();
                ExcelServices.AddSheetHeading(wsSheet, "TableName");

                // Add "input" and "output" headet to Excel table
                //ExcelServices.AddTableHeadings(wsSheet, new[] { "col1", "col2", "col3" }, subCategoriesjArray.Count+ accountMovmentjArray.Count);
                //Add DMN Table to excel Sheet
                ExcelServices.CreateExcelTableFromMovementsViewModel(modementsViewModels, wsSheet, "TableName");
            }
            catch (Exception e)
            {
                var noko = e.Message;
            }
            var filename = "MovementsTests";
            var path     = string.Concat(@"h:\temp\");

            Directory.CreateDirectory(path);
            var filePath = Path.Combine(path, string.Concat(filename, ".xlsx"));

            excelPkg?.SaveAs(new FileInfo(filePath));

            File.Exists(filePath).Should().BeTrue();
        }
예제 #3
0
        public void GetSubCategoryTest()
        {
            JArray   JsonmodementsViewModels;
            Encoding encoding = Encoding.GetEncoding(28591);

            using (StreamReader stream = new StreamReader(GetAssemblyFile("TransactionViewModelArray.json"), encoding, true))
            {
                JsonmodementsViewModels = JArray.Parse(stream.ReadToEnd());
            }

            Stream SubCategoriesStream  = GetAssemblyFile("Categories.xlsx");
            Stream AccountMovmentStream = GetAssemblyFile("Transactions.xlsx");

            ExcelWorksheet workSheet  = ExcelServices.GetExcelWorksheet(AccountMovmentStream, "Felles");
            ExcelWorksheet workSheet2 = ExcelServices.GetExcelWorksheet(SubCategoriesStream);

            var subCategoriesjArray          = JArray.Parse(ExcelServices.GetJsonFromTable(workSheet2));
            var accountMovmentjArray         = JArray.Parse(ExcelServices.GetJsonFromTable(workSheet));
            List <SubCategory> subCategories = ModelClassServices.GetSubCategoriesFromJarray(subCategoriesjArray);

            var Modelviews = new ModelViewBuilder().AddTextToMovemnt(new List <string> {
                "arg tur", "arg tur", "argentina tur", "tur argentina", "argentina tur"
            });

            var movementsViewModels = new List <MovementsViewModel>();

            foreach (var item in JsonmodementsViewModels)
            {
                movementsViewModels.Add(new ModelClassServices().JsonToMovementsViewModels(item));
            }

            List <MovementsViewModel> newList = new List <MovementsViewModel>();

            foreach (var movment in Modelviews)
            {
                newList.Add(ModelClassServices.UpdateMovementViewModelWithSubCategory(subCategories, movment));
            }

            newList.All(mv => !string.IsNullOrEmpty(mv.Category)).Should().BeTrue();
        }
예제 #4
0
        public static void CreateExcelTableFromMovementsViewModel(List <MovementsViewModel> movementsModel, ExcelWorksheet wsSheet, string tableName)
        {
            //Get the list of Column that want to be created in the table
            var excelColumns = MovementsViewModel.excelColumns;

            // Calculate size of the table
            var endRow   = _startRow + movementsModel.Count + 1;
            var endColum = _startColumn + excelColumns.Count;

            // Create Excel table Header
            CreateExcelTableHeader(wsSheet, tableName, excelColumns, _startRow, endRow, _startColumn, endColum);



            // Set Excel table content
            var tableStartColumn = _startColumn;
            var row = _startRow + 1;

            foreach (var movement in movementsModel)
            {
                // account Movements
                foreach (var propertyName in excelColumns)
                {
                    //Get Property name value
                    var propertyValue = ModelClassServices.GetPropertyValue(movement, propertyName);
                    //add value tu excel cell
                    wsSheet.Cells[row, tableStartColumn].Style.Numberformat.Format = ExcelHelpers.SetFormatToCell(propertyName);

                    AddExcelCellValue(row, tableStartColumn, propertyValue, wsSheet);
                    tableStartColumn++;
                }
                tableStartColumn = _startColumn;
                row++;
            }

            //var noko = dict2.Keys.Except(dict.Keys);
            //var noko2 = dict.Keys.Except(dict2.Keys);
            wsSheet.Cells[wsSheet.Dimension.Address].AutoFitColumns();
        }
예제 #5
0
        public void ParseJsonToModelClassTest()
        {
            var    resourceFileNema = "SubCategories.json";
            var    resourcePath     = $"ExcelClient.Tests.TestData.{resourceFileNema}";
            var    assembly         = Assembly.GetExecutingAssembly();
            Stream resourceAsStream = assembly.GetManifestResourceStream(resourcePath);

            string json;
            JArray jArray;

            using (StreamReader r = new StreamReader(resourceAsStream))
            {
                json   = r.ReadToEnd();
                jArray = JArray.Parse(json);
            }

            foreach (var item in jArray)
            {
                var noko = new ModelClassServices().JsonToSubCategory(item);
            }

            json.Should().NotBeNull();
        }
예제 #6
0
        public static void CreateExcelMonthSummaryTableFromMovementsViewModel(List <MovementsViewModel> movementsModel, ExcelWorksheet wsSheet, IEnumerable <string> categories,
                                                                              int sheetYear = 0, string sheetTableName = null, bool justExtrations = true)
        {
            int minYear;
            int maxYear;
            IEnumerable <string> TemExcelColumn;

            if (sheetYear > 0)
            {
                minYear = sheetYear;
                maxYear = sheetYear;
                //add month ant total column to Ienumeration
                TemExcelColumn = new[] { "Month", "Total" };
            }
            else
            {
                minYear = movementsModel.Min(mov => mov.DateTime.Year);
                maxYear = movementsModel.Max(mov => mov.DateTime.Year);
                //add month column to Ienumeration
                TemExcelColumn = new[] { "Month" };
            }

            if (justExtrations)
            {
                categories = ModelClassServices.GetExtractionCategories(categories, movementsModel);
            }
            else
            {
                categories = ModelClassServices.GetIncomsCategories(categories, movementsModel);
            }


            categories = categories.OrderBy(c => c);
            // and the new columns to the category
            var newExcelColumn = TemExcelColumn.Concat(categories);


            // Calculate size of the table
            var endRow   = _startRow + 12;
            var endColum = _startColumn + newExcelColumn.Count();

            // Create Excel table Header
            int startRow    = _startRow;
            int startColumn = _startColumn;

            //var row = _startRow + 1;
            var row = _startRow;

            for (int year = minYear; year <= maxYear; year++)
            {
                //give table Name
                var tableName = sheetTableName ?? string.Concat("Table-", year);

                // add Headers to table
                CreateExcelTableHeader(wsSheet, tableName, newExcelColumn, startRow, endRow, _startColumn, endColum, true);

                var tableStartColumn = _startColumn;
                row++;

                // Set Excel table content
                for (int month = 1; month <= 12; month++)
                {
                    var monthName = string.Concat(DateTimeFormatInfo.CurrentInfo.GetMonthName(month));
                    AddExcelCellValue(row, tableStartColumn, monthName, wsSheet);
                    if (sheetYear > 0)
                    {
                        //Get summ for category
                        double totalCategory = ModelClassServices.CategoriesMonthYearTotal(movementsModel, year, month, justExtrations);

                        AddExcelCellValue(row, tableStartColumn + 1, totalCategory, wsSheet);
                    }
                    foreach (var category in newExcelColumn)
                    {
                        if (category != "Month" && category != "Total")
                        {
                            //Get summ for category
                            double totalCategory = ModelClassServices.TotalforCategory(movementsModel, category, year, month, justExtrations);
                            wsSheet.Cells[row, tableStartColumn].Style.Numberformat.Format = ExcelHelpers.SetFormatToCell("Amount");
                            //add value tu excel cell
                            AddExcelCellValue(row, tableStartColumn, totalCategory, wsSheet);
                        }
                        tableStartColumn++;
                    }
                    tableStartColumn = _startColumn;
                    row++;
                }
                row      = row + 2;
                startRow = row;
                endRow   = row + 12;
            }

            //var noko = dict2.Keys.Except(dict.Keys);
            //var noko2 = dict.Keys.Except(dict2.Keys);
            wsSheet.Cells[wsSheet.Dimension.Address].AutoFitColumns();
        }
예제 #7
0
        public static void CreateCategoriesAverage(List <MovementsViewModel> movementsModel, ExcelWorksheet wsSheet, IEnumerable <string> categories,
                                                   int year = 0, int month1 = 0, bool justExtrations = true)
        {
            if (justExtrations)
            {
                categories = ModelClassServices.GetExtractionCategories(categories, movementsModel);
            }
            else
            {
                categories = ModelClassServices.GetIncomsCategories(categories, movementsModel);
            }
            categories = categories.OrderBy(c => c);
            var columns          = new[] { "Type" };
            var newAverageColumn = new[] { $"Year({year})", "Day" };

            var newExcelColumn = columns.Concat(categories);
            // Calculate size of the table
            var endRow   = _startRow + newAverageColumn.Count();
            var endColum = _startColumn + newExcelColumn.Count();

            // Create Excel table Header
            int startRow    = _startRow;
            int startColumn = _startColumn;

            var row = _startRow;

            var tableStartColumn = _startColumn;

            // Set Excel table content

            //give table Name
            var tableName = "CategoriesAverage";

            // Add table Headers
            CreateExcelTableHeader(wsSheet, tableName, newExcelColumn, startRow, endRow, _startColumn, endColum, true);
            row++;

            foreach (var item in newAverageColumn)
            {
                foreach (var category in newExcelColumn)
                {
                    if (category == "Type")
                    {
                        AddExcelCellValue(row, tableStartColumn, item, wsSheet);
                    }
                    else
                    {
                        double categoryAverage = 0;
                        if (item == $"Year({year})")
                        {
                            categoryAverage = ModelClassServices.AverageforCategory(movementsModel, category, year, null, justExtrations);
                        }
                        if (item == $"Day")
                        {
                            categoryAverage = ModelClassServices.AverageforCategory(movementsModel, category, null, null, justExtrations);
                        }
                        wsSheet.Cells[row, tableStartColumn].Style.Numberformat.Format = ExcelHelpers.SetFormatToCell("Amount");
                        AddExcelCellValue(row, tableStartColumn, categoryAverage, wsSheet);
                    }
                    tableStartColumn++;
                }
                tableStartColumn = _startColumn;
                row++;
            }

            row = row + 3;

            // Calculate size of the table
            endRow   = row + 12;
            endColum = _startColumn + newExcelColumn.Count();

            // Create Excel table Header
            startRow    = row;
            startColumn = _startColumn;


            tableStartColumn = _startColumn;

            // Set Excel table content

            //give table Name
            tableName = "CategoriesMonthAverage";
            // Add table Headers
            CreateExcelTableHeader(wsSheet, tableName, newExcelColumn, startRow, endRow, _startColumn, endColum, true);
            row++;

            tableStartColumn = _startColumn;

            for (int month = 1; month <= 12; month++)
            {
                var monthName = string.Concat(DateTimeFormatInfo.CurrentInfo.GetMonthName(month));
                AddExcelCellValue(row, tableStartColumn, monthName, wsSheet);

                foreach (var category in newExcelColumn)
                {
                    double categoryAverage = 0;

                    if (category == "Type")
                    {
                        tableStartColumn++;
                        continue;
                    }
                    else
                    {
                        categoryAverage = ModelClassServices.AverageforCategory(movementsModel, category, null, month, justExtrations);

                        wsSheet.Cells[row, tableStartColumn].Style.Numberformat.Format = ExcelHelpers.SetFormatToCell("Amount");
                        AddExcelCellValue(row, tableStartColumn, categoryAverage, wsSheet);
                        tableStartColumn++;
                    }
                }
                tableStartColumn = _startColumn;
                row++;
            }
        }
예제 #8
0
        public void CreteCashFlowFromMovements()
        {
            var MovementsExcelPkg = new ExcelPackage(GetAssemblyFile("Movements.xlsx"));
            var WoorSheet         = MovementsExcelPkg.Workbook.Worksheets.FirstOrDefault();
            var jsonFromTable     = ExcelServices.GetJsonFromTable(WoorSheet);

            MovementsExcelPkg.Dispose();

            List <MovementsViewModel> movementsViewModels = JsonConvert.DeserializeObject <List <MovementsViewModel> >(jsonFromTable, JsonServices.GetJsonSerializerSettings());

            var categoryList = ModelClassServices.GetListOfCategories(movementsViewModels);

            //var movements = JsonConvert.DeserializeObject<List<MovementsViewModel>>(jsonFromTable, dateTimeConverter);
            var excelPkg = new ExcelPackage(GetAssemblyFile("Budget Cashflow.xlsx"));

            try
            {
                var ExpensesWSheet = excelPkg.Workbook.Worksheets["Expenses details"];

                var year = 2019;

                //workSheet.Tables.Delete("YearExpenses");

                // add year expenses categoiers
                ExcelServices.CreateYearExpensesTable(movementsViewModels, categoryList, year, ExpensesWSheet, "YearExpenses", "B38");

                // add year incoms categoiers
                ExcelServices.CreateYearIncomsTable(movementsViewModels, categoryList, year, ExpensesWSheet, "YearIncoms", "B54");

                // update Year table

                //Get Adress to budget table
                var categoryListWithTotals = Helpers.AddItemsToIenumeration(categoryList, new List <string>()
                {
                    "Sub Total", "Total"
                });
                var CategoriesAddressWithTotals = ExcelServices.GetColumnsNameAdress(categoryListWithTotals, ExpensesWSheet, "Year_budget");

                //Get address to expenses table
                var CategoriesAddress = ExcelServices.GetColumnsNameAdress(categoryListWithTotals, ExpensesWSheet, "YearExpenses");

                //Update year excel table
                var yearWSheet = excelPkg.Workbook.Worksheets["Year summary"];

                ExcelServices.UpdateYearTableValues(CategoriesAddressWithTotals, year, yearWSheet, "tblOperatingExpenses", "BUDGET", "Total");
                ExcelServices.UpdateYearTableValues(CategoriesAddress, year, yearWSheet, "tblOperatingExpenses", "ACTUAL", "Total");

                // get address to Month budget table
                var categoriesWithoutIncome = Helpers.DeleteItemsfromIenumeration(categoryList, new List <string>()
                {
                    "Åse", "Matias"
                });
                var monthBudgetCategoriesAddress   = ExcelServices.GetColumnsNameAdress(categoriesWithoutIncome, ExpensesWSheet, "Year_budget");
                var monthExpensesCategoriesAddress = ExcelServices.GetColumnsNameAdress(categoriesWithoutIncome, ExpensesWSheet, "YearExpenses");

                //update month Table with the categories summary
                var monthWSheet = excelPkg.Workbook.Worksheets["Monthly summary"];

                ExcelServices.UpdateClassesTableValues(monthBudgetCategoriesAddress, monthExpensesCategoriesAddress, year, monthWSheet, "tblOperatingExpenses7");

                var categoriesAverageWSheet = excelPkg.Workbook.Worksheets.Add("Categories Average");
                new ExcelServices();
                ExcelServices.CreateCategoriesAverage(movementsViewModels, categoriesAverageWSheet, categoryList, year, 0, true);
            }
            catch (Exception e)
            {
                var noko = e.Message;
            }
            var filename = "Budget Cashflow With Average 2019";
            var path     = string.Concat(@"h:\temp\");

            Directory.CreateDirectory(path);
            var filePath = Path.Combine(path, string.Concat(filename, ".xlsx"));

            excelPkg?.SaveAs(new FileInfo(filePath));
            excelPkg.Dispose();

            File.Exists(filePath).Should().BeTrue();
        }