MVC 5如何上传Excel文件并使用EPPlus(OfficeOpenXml)直到上一个填充的数据行读取行ExcelPackage

我有一个MVCfile upload的解决scheme,上传一个Excel文件,我有一个Excel包的问题,​​它使用Dimension.End.Row属性读取我的Excel文档行到文件末尾,我想直到阅读最后一个填充行,而不是整个电子表格行,因为它popup我的代码与空引用错误,Excel是从外部来源,它是一个约7000行的locking文件,但只有大约3000行填充数据, Dimension.End.Row属性读取整个7000行,因此当我循环并映射行和列时,最后填充的数据行3001的数据行上有空值。 我怎样才能使这只读取在Excel文件中填充行,就像我说我不能修改这个文件为locking和只读,我只能读取它并上传它。 请参阅下面的代码。

[HttpPost] public ActionResult Upload(FormCollection formCollection) { if (Request != null) { HttpPostedFileBase file = Request.Files["UploadedFile"]; 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)); var suppleirList = new List<CleanSupplierClaim>(); using (var package = new ExcelPackage(file.InputStream)) { var currentSheet = package.Workbook.Worksheets; var workSheet = currentSheet.First(); var noOfColumns = workSheet.Dimension.End.Column; var noOfRows = workSheet.Dimension.End.Row;// Here is where my issue is for (int rowIterator = 5; rowIterator < noOfRows; rowIterator++) { var claim = new CleanSupplierClaim(); claim.Action = workSheet.Cells[rowIterator, 1].ToString(); claim.Line_Number = workSheet.Cells[rowIterator, 2].Value.ToString(); claim.Total_Claim = workSheet.Cells[rowIterator, 3].Value.ToString(); claim.ClaimReference = workSheet.Cells[rowIterator, 4].Value.ToString(); claim.Supplier_Claim = workSheet.Cells[rowIterator, 5].Value.ToString(); claim.Currency = workSheet.Cells[rowIterator, 6].Value.ToString(); suppleirList.Add(claim); } } } } return View("Index"); 

你可以做这样的事情;

 for (int rowIterator = 5; rowIterator < noOfRows; rowIterator++) { if(workSheet.Cells[rowIterator, 1] == null)//can this be null? { break; //if it's null exit from the for loop } var claim = new CleanSupplierClaim(); claim.Action = workSheet.Cells[rowIterator, 1].ToString(); claim.Line_Number = workSheet.Cells[rowIterator, 2].Value.ToString(); claim.Total_Claim = workSheet.Cells[rowIterator, 3].Value.ToString(); claim.ClaimReference = workSheet.Cells[rowIterator, 4].Value.ToString(); claim.Supplier_Claim = workSheet.Cells[rowIterator, 5].Value.ToString(); claim.Currency = workSheet.Cells[rowIterator, 6].Value.ToString(); suppleirList.Add(claim); }