Best way to Read Excel Files with MVC

There of course are multiple ways to upload and read an Excel file.  After creating a version the long way I ran into file storage, permission issues etc so started looking for a better way to do this. I found a solution that does not actually upload the excel file, so no storage issues, no permission issues ... and a lot less code.  I am using a package available from Nuget called EPPlus.  So first thing you will want to do is grab this package - here is the nuget command line:

install-package  EPPlus
Be sure and add this to your Controller:
using OfficeOpenXml;


public ActionResult UploadExtensions(HttpPostedFileBase file)
        {
     
if ((file != null) && (file.ContentLength > 0) && !string.IsNullOrEmpty(file.FileName))
            {
                string fileName = file.FileName;
                string fileContentType = file.ContentType;
                byte[] fileBytes = new byte[file.ContentLength];
                var data = file.InputStream.Read(fileBytes, 0, Convert.ToInt32(file.ContentLength));
            }
 int itemcount = 0;             using (var package = new ExcelPackage(file.InputStream))             {                 var currentSheet = package.Workbook.Worksheets;                 var workSheet = currentSheet.First();                 var noOfCol = workSheet.Dimension.End.Column;                 var noOfRow = workSheet.Dimension.End.Row;                 for (int rowIterator = 2; rowIterator <= noOfRow; rowIterator++)                 {


//the following code is specific to my app but wanted to show you the iteration
                    ExtensionUpload c = new ExtensionUpload();
                    c.AccountCode = workSheet.Cells[rowIterator, 1].Value.ToString();
                    c.ExtensionURL = workSheet.Cells[rowIterator, 2].Value.ToString();




//here is an example of how I deal with a null value




if (workSheet.Cells[rowIterator, 3].Value != null)
 {
  c.StoreExtension = workSheet.Cells[rowIterator, 3].Value.ToString();
  c.StoreExtension = c.StoreExtension.PadLeft(2, '0');
                    }
                    else
                    {
                        c.StoreExtension = "00";
                    }
//adding the record to my database object
db.ExtensionUploads.Add(c);
                    itemcount += 1;
                }

db.SaveChanges();

ViewBag.message = itemcount + " Records were inserted! ";
             
               
           
    
            return View();
        }

Comments

Popular posts from this blog

Linq Exclude from separate list

Sorting Ascending and Descending

Linq Query Syntax vs Method Syntax