Как обновить таблицу со списком записей в листе Excel во время загрузки - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть таблица с 4 столбцами, JambRegNo, UtmeScore, ScreeningScore и ScreeningStatus. Пользователь, экспортировавший таблицу в Excel, вручную вводит оценку скрининга каждого ученика в листе Excel. Пользователь возвращается, чтобы загрузить лист Excel, чтобы обновить таблицу с показателем проверки, для которого одновременно ScreeningStatus устанавливается равным true для каждой загруженной записи студента.

Как этого можно достичь?

       [HttpPost]
        [Route("ImportUpload")]
        public IActionResult ImportUpload(IFormFile reportfile)
        {
            string folderName = "Files";
            string webRootPath = _hostingEnvironment.WebRootPath;
            string newPath = Path.Combine(webRootPath, folderName);
            // Delete Files from Directory
            System.IO.DirectoryInfo di = new DirectoryInfo(newPath);
            foreach (FileInfo filesDelete in di.GetFiles())
            {
                filesDelete.Delete();
            }// End Deleting files form directories

            if (!Directory.Exists(newPath))// Crate New Directory if not exist as per the path
            {
                Directory.CreateDirectory(newPath);
            }
            var fiName = Guid.NewGuid().ToString() + Path.GetExtension(reportfile.FileName);
            using (var fileStream = new FileStream(Path.Combine(newPath, fiName), FileMode.Create))
            {
                reportfile.CopyTo(fileStream);
            }
            // Get uploaded file path with root
            string rootFolder = _hostingEnvironment.WebRootPath;
            string fileName = @"Files/" + fiName;
            FileInfo file = new FileInfo(Path.Combine(rootFolder, fileName));

            using (ExcelPackage package = new ExcelPackage(file))
            {
                ExcelWorksheet workSheet = package.Workbook.Worksheets[0];
                int totalRows = workSheet.Dimension.Rows;
                List<ScreeningList> reportList = new List<ScreeningList>();

                for (int i = 2; i <= totalRows; i++)
                {
                    try
                    {
                        string JambRegNo = workSheet?.Cells[i, 1]?.Value?.ToString();
                        string Utmescore = workSheet?.Cells[i, 2]?.Value?.ToString();
                        double ScreeningScore = Convert.ToDouble(workSheet?.Cells[i, 3]?.Value?.ToString());
                        reportList.Add(new ScreeningList
                        {

                            JambRegNo = JambRegNo,
                            Utmescore = Utmescore,
                            ScreeningScore = ScreeningScore

                        });

                        //screening.Add();
                    }
                    catch (Exception Ex)
                    {
                        // Exception
                    }
                }


                _context.ScreeningList.UpdateRange(reportList);
                _context.SaveChanges();
                return RedirectToAction(nameof(ScreeningResult));
            }

        }

Это метод, который я использовал при загрузке. Но вместо обновления он добавляет новые записи, и я не могу установить значение ScreeningStatus в true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...