上传期间如何使用Excel工作表中的记录列表更新表

我有一个包含4列的表,分别为JambRegNoUtmeScoreScreeningScoreScreeningStatus。 用户将表格导出到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。

zhangwyw 回答:上传期间如何使用Excel工作表中的记录列表更新表

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3137643.html

大家都在问