Upload and Edit Excel file

by Admin 29. July 2015 13:54

 

        [HttpPost("UploadFiles"), DisableRequestSizeLimit]

        [AllowAnonymous]

        public IActionResult UploadFiles() //Blob Storage

        {

            try

            {

                var files = Request.Form.Files;

                const string folderName = "ExcelUploads";

 

                var pathToSave = Path.Combine(Directory.GetCurrentDirectory(), folderName);

 

                if (files.Any(f => f.Length == 0))

                {

                    return BadRequest();

                }

 

                foreach (var file in files)

                {

                    var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');

                    var fullPath = Path.Combine(pathToSave, fileName);

                    var dbPath = Path.Combine(folderName, fileName);

 

                    using var stream = new FileStream(fullPath, FileMode.Create);

                    file.CopyTo(stream);

                }

 

                return Ok("File uploaded successfully.");

            }

            catch (Exception ex)

            {

                return StatusCode(500, "Internal server error");

            }

        }

 

        [HttpGet("ReadFiles")]

        [AllowAnonymous]

        public IActionResult ReadFiles()

        {

            const string folderName = "ExcelUploads";

            var folderPath = Path.Combine(Directory.GetCurrentDirectory(), folderName);

 

            var fileEntries = Directory.GetFiles(folderPath);

 

            foreach (var fileName in fileEntries)

            {

                if (fileName.Length > 0)//ProcessFiles

                {

                    ReadExcelByName(fileName);

                }

            }

            return Ok();

        }

 

        /// <summary>

        /// Read the rows and update the column data

        /// </summary>

        /// <param name="fileName"></param>

        /// <returns></returns>

        public static string ReadExcelByName(string fileName)

        {

            IWorkbook workbook;

            ISheet sheet;

            //IRow row;

            ICell cell;

            string sheetName = "CO_Data_input_sheet";

            using FileStream rstr = new FileStream(fileName, FileMode.Open, FileAccess.Read);

            workbook = new XSSFWorkbook(rstr);

            sheet = workbook.GetSheet(sheetName);

            IRow headerRow = sheet.GetRow(0);

            int cellCount = headerRow.LastCellNum;

 

            for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)

            {

                IRow row = sheet.GetRow(i);

                if (row == null) continue;

                if (row.Cells.All(d => d.CellType == CellType.Blank)) continue;

                for (int j = row.FirstCellNum; j < cellCount; j++)

                {

                    if (row.GetCell(j) != null)

                    {

                        if (!string.IsNullOrEmpty(row.GetCell(j).ToString()) & ((!string.IsNullOrWhiteSpace(row.GetCell(j).ToString()))))

                        {

                            var temp1 = new CellReference(row.GetCell(j));

                            var reference = temp1.FormatAsString();

                            if (reference.StartsWith("D"))

                            {

                                using FileStream wstr = new FileStream(fileName, FileMode.Create, FileAccess.Write);

                                cell = row.GetCell(j);

                                cell.SetCellValue(DateTime.Now.ToShortDateString());

                                workbook.Write(wstr);

                                wstr.Close();

                            }

                            if (reference.StartsWith("E"))

                            {

                                using FileStream wstr = new FileStream(fileName, FileMode.Create, FileAccess.Write);

                                cell = row.GetCell(j);

                                cell.SetCellValue("Dev");

                                workbook.Write(wstr);

                                wstr.Close();

                            }

                        }

                    }

                }

            }

            rstr.Close();

            

            return null;

        }

 
 

ExcelFileUploadController.cs (9.60 kb)

Tags:

Comments are closed

TextBox

Tag cloud

    RecentPosts