C# 从httppostedfilebase Excel文件读取单个单元格值
我有一个excel文件,客户端将其作为httppostedfilebase发送到服务器,我需要知道如何从该文件中读取值C# 从httppostedfilebase Excel文件读取单个单元格值,c#,asp.net-mvc,excel,C#,Asp.net Mvc,Excel,我有一个excel文件,客户端将其作为httppostedfilebase发送到服务器,我需要知道如何从该文件中读取值 [HttpPost] public ActionResult ShowExcelFile(GetExcel model) { var file = model.Files[0]; FileInfo info = new FileInfo(file.FileName); var fileName = Pat
[HttpPost]
public ActionResult ShowExcelFile(GetExcel model)
{
var file = model.Files[0];
FileInfo info = new FileInfo(file.FileName);
var fileName = Path.GetFullPath(file.FileName);
if (file != null && file.ContentLength > 0)
{
using (ExcelPackage package = new ExcelPackage(info))
{
//Read some cell value, how?
}
}
return View("ShowExcelFile");
}
我的模型:
public class GetExcel
{
public List<HttpPostedFileBase> Files { get; set; }
public GetExcel()
{
Files = new List<HttpPostedFileBase>();
}
}
公共类GetExcel
{
公共列表文件{get;set;}
公共GetExcel()
{
文件=新列表();
}
}
我的看法是:
@using (Html.BeginForm("ShowExcelFile", "ShowExcel", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.TextBoxFor(m => m.Files, new { type = "file", name = "Files" })<br />
<input type="submit" value="Upload file" />
}
@使用(Html.BeginForm(“showcelfile”、“showcelf”、FormMethod.Post、new{enctype=“multipart/formdata”}))
{
@Html.TextBoxFor(m=>m.Files,新的{type=“file”,name=“Files”})
}
我现在真的不知道怎么做,我试过Excel数据阅读器,但它不能读取公式值。据我所知,您使用的是EPPlus库,我不想从客户端发送的Excel文件中读取单元格值。要获得值,您需要这样编写smth
public void Upload(HttpPostedFileBase file)
{
package.Load(file.InputStream);
var worksheet = package.Workbook.Worksheets.First();
var cellValue = worksheet.Cells[rowIndex, columnIndex].Value;
var formulaValue = worksheet.Cells[rowIndex, columnIndex].Formula;
}
让我们将其放入控制器操作u中,以获取文件:
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult ShowExcelFile()
{
// For getting the file that is Uploadeded.
HttpPostedFileBase fileUpload = Request.Files["Files"];
byte[] data;
using (Stream inputStream = fileUpload.InputStream)
{
MemoryStream memoryStream = inputStream as MemoryStream;
if (memoryStream == null)
{
memoryStream = new MemoryStream();
inputStream.CopyTo(memoryStream);
data = memoryStream.ToArray();
return Json(data, JsonRequestBehavior.AllowGet);
}
}
return Json(new { }, JsonRequestBehavior.AllowGet);
}
关于如何实现控制器和视图,有几个问题。例如,您的ActionResult需要
列表
,但视图正在发布HttpPostedFileBase
但是,除此之外,在包的内部使用
,尝试:
ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
worksheet.Select(new ExcelAddress("A1")); //there is more than one way to set this
string cellVal = (string)worksheet.SelectedRange.Value;
我得到FileNotFoundException。它试图查找的路径不存在于您的
ShowExcelFile
中的断点。model.Files[0]
null吗?如果是,那是因为您没有在视图中发布列表
。修复后,您应该能够读取路径。我已经获取了Model.Files[0]文件。问题是如何读取它以及如何从中获取单元格值?@Ni3这里的问题是,问题并不十分清楚。并且没有关于用于读取的EPPlus包的信息。您需要使用电子表格将该字节数据转换为DataTable@Ni3假设使用这样的怪物(不是免费的,对吧?)。EPPlus将满足他的大部分需求。问题是当我使用包时,文件的路径不正确