public ActionResult ExcelExport(int userid) { //string token = Request.Headers["Authorization"].ToSafetyString(); //var userid = Extensions.GetDecodeTokenByProperty(token, "nameid").ToInt(); var model = _dataService.DataExport(userid); var currentYear = DateTime.Now.Year; var currentWeek = DateTime.Now.GetIso8601WeekOfYear(); var currentMonth = DateTime.Now.Month; var currentHalf = DateTime.Now.GetQuarter(); var currentQuarter = DateTime.Now.GetQuarter(); //var now = DateTime.Now; //var end = now.GetEndOfQuarter(); //var tt = end.Subtract(now).Days; //var targetValue = ""; DataTable Dt = new DataTable(); Dt.Columns.Add("KPILevel Code", typeof(string)); Dt.Columns.Add("KPI Name", typeof(string)); Dt.Columns.Add("Actual Value", typeof(string)); Dt.Columns.Add("Target Value", typeof(object)); Dt.Columns.Add("Period Value", typeof(string)); Dt.Columns.Add("Year", typeof(int)); Dt.Columns.Add("OC", typeof(string)); Dt.Columns.Add("Update Time", typeof(object)); Dt.Columns.Add("Start Date", typeof(string)); Dt.Columns.Add("End Date", typeof(string)); foreach (var item in model) { var oc = _levelService.GetNode(item.KPILevelCode); // Logic export tuần if (item.StateW == true) { for (int i = 1; i <= currentWeek; i++) { var startDayOfWeek = CodeUtility.ToGetMondayOfWeek(currentYear, i).ToString("MM/dd/yyyy"); var endDayOfWeek = CodeUtility.ToGetSaturdayOfWeek(currentYear, i).ToString("MM/dd/yyyy"); var updateTimeW = item.UploadTimeW.ConvertNumberDayOfWeekToString() + ", Week " + i; var target = _dataService.GetTargetData(item.KPILevelCode, "W", i); var value = _dataService.GetValueData(item.KPILevelCode, "W", i); Dt.Rows.Add(item.KPILevelCode + "W", item.KPIName, value, target, i, currentYear, oc, updateTimeW, startDayOfWeek, endDayOfWeek); } } ///Logic export tháng if (item.StateM == true) { var updateTimeM = item.UploadTimeM.ToStringDateTime("MM/dd/yyyy"); for (int i = 1; i <= currentMonth; i++) { var startDayOfMonth = CodeUtility.ToGetStartDateOfMonth(currentYear, i).ToString("MM/dd/yyyy"); var endDayOfMonth = CodeUtility.ToGetEndDateOfMonth(currentYear, i).ToString("MM/dd/yyyy"); var value = _dataService.GetValueData(item.KPILevelCode, "M", i); var target = _dataService.GetTargetData(item.KPILevelCode, "M", i); Dt.Rows.Add(item.KPILevelCode + "M", item.KPIName, value, target, i, currentYear, oc, updateTimeM, startDayOfMonth, endDayOfMonth); } } ///Logic export nửa năm if (item.StateH == true) { var updateTimeH = item.UploadTimeH.ToStringDateTime("MM/dd/yyyy"); for (int i = 1; i <= currentHalf; i++) { var seq = CodeUtility.ToGetStartAndEndDateOfHalfYear(currentYear, i); var value = _dataService.GetValueData(item.KPILevelCode, "H", i); var target = _dataService.GetTargetData(item.KPILevelCode, "H", i); Dt.Rows.Add(item.KPILevelCode + "H", item.KPIName, value, target, i, currentYear, oc, updateTimeH, seq.Item1.ToString("MM/dd/yyyy"), seq.Item2.ToString("MM/dd/yyyy")); } } ///Logic export quý if (item.StateQ == true) { var updateTimeQ = item.UploadTimeQ.ToStringDateTime("MM/dd/yyyy"); for (int i = 1; i <= currentQuarter; i++) { var seq = CodeUtility.ToGetStartAndEndDateOfQuarter(currentYear, i); var value = _dataService.GetValueData(item.KPILevelCode, "Q", i); var target = _dataService.GetTargetData(item.KPILevelCode, "Q", i); Dt.Rows.Add(item.KPILevelCode + "Q", item.KPIName, value, target, i, currentYear, oc, updateTimeQ, seq.Item1.ToString("MM/dd/yyyy"), seq.Item2.ToString("MM/dd/yyyy")); } } ///Logic export năm if (item.StateY == true) { var updateTimeY = item.UploadTimeY.ToStringDateTime("MM/dd/yyyy"); var sey = CodeUtility.ToGetStartAndEndDateOfYear(currentYear); for (int i = currentYear - 9; i <= currentYear; i++) { var value = _dataService.GetValueData(item.KPILevelCode, "Y", currentYear); var target = _dataService.GetTargetData(item.KPILevelCode, "Y", i); Dt.Rows.Add(item.KPILevelCode + "Y", item.KPIName, value, target, i, currentYear, oc, updateTimeY, sey.Item1.ToString("MM/dd/yyyy"), sey.Item2.ToString("MM/dd/yyyy")); } } } var memoryStream = new MemoryStream(); using var excelPackage = new ExcelPackage(memoryStream); var worksheet = excelPackage.Workbook.Worksheets.Add("Sheet1"); worksheet.Cells["A1"].LoadFromDataTable(Dt, true, TableStyles.None); worksheet.Cells["A1:AN1"].Style.Font.Bold = true; worksheet.DefaultRowHeight = 18; worksheet.Column(2).Style.HorizontalAlignment = ExcelHorizontalAlignment.Left; worksheet.Column(6).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; worksheet.Column(7).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; worksheet.DefaultColWidth = 20; worksheet.Column(2).AutoFit(); if (excelPackage == null) { return(NotFound()); } byte[] data = excelPackage.GetAsByteArray() as byte[]; return(File(data, "application/octet-stream", "DataUpload.xlsx")); }