예제 #1
0
        public MainWindow()
        {
            InitializeComponent();

            sheetDate.Text       = DateTime.Now.ToString("dd/MM/yy   HH:mm");
            _sheetDateTime       = DateTime.Now;
            _excelController     = new ExcelController();
            _dataTableController = new DataTableController();

            statusMsg.Foreground = System.Windows.Media.Brushes.Red;
            statusMsg.Text       = "Timesheet not loaded";

            NewTimer();
            TrayManagement();
        }
예제 #2
0
        private void ExcelCalculations()
        {
            try
            {
                var fi = new FileInfo(_fileLoadPath);
                using (var excelPackage = new ExcelPackage(fi))
                {
                    List <Object> instanceList = new List <Object>();

                    var wsTimes      = excelPackage.Workbook.Worksheets["MySheet"];
                    var wsTimesStart = wsTimes.Dimension.Start;
                    var wsTimesEnd   = wsTimes.Dimension.End;

                    //TODO: this needs refactoring to import straight to the datatable
                    for (int row = wsTimesStart.Row + 1; row <= wsTimesEnd.Row; row++)
                    {
                        instanceList.Add(wsTimes.Cells[row, 1].Value);
                        instanceList.Add(wsTimes.Cells[row, 2].Value);
                        instanceList.Add(wsTimes.Cells[row, 3].Value);
                    }

                    var outTable = new DataTableController().GetOutputDataTable(instanceList);

                    //export datatable to excel sheet
                    var wsCalc = excelPackage.Workbook.Worksheets.Add("Calculated_Times");
                    wsCalc.Cells["A1"].LoadFromDataTable(outTable, true);
                    wsCalc.DeleteColumn(4);
                    excelPackage.Save();

                    statusMsg.Foreground = System.Windows.Media.Brushes.Green;
                    statusMsg.Text       = "Calculation completed";
                }
            }
            catch
            {
                statusMsg.Foreground = System.Windows.Media.Brushes.Red;
                statusMsg.Text       = "Invalid operation, calculation failed";
            }
        }