我的控制器:
[HttpPost]
public ActionResult ShowExcelFile(HttpPostedFileBase getFile)
{
//Make something with values of getFile
return PartialView("ShowExcelFile");
}
在我看来:
@using (Html.BeginForm("ShowExcelFile", "ShowExcel", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" id="getFile" name="getFile" /><br />
<input type="submit" value="Upload file" />
}
如何从getFile中读取值?
答案 0 :(得分:3)
解析Excel文件的一种简单方法是使用诸如Excel Data Reader之类的库(也可用作Nuget package)。安装后,阅读Excel文件非常简单。
using Excel;
[HttpPost]
public ActionResult ShowExcelFile(HttpPostedFileBase getFile)
{
if (getFile != null && getFile.ContentLength > 0)
{
// .xlsx
IExcelDataReader reader = ExcelReaderFactory.CreateOpenXmlReader(getFile.InputStream);
// .xls
IExcelDataReader reader = ExcelReaderFactory.CreateBinaryReader(getFile.InputStream);
reader.IsFirstRowAsColumnNames = true; // if your first row contains column names
}
return PartialView("ShowExcelFile");
}
从那时起,如果不知道Excel文件的内容,很难告诉您确切的需求。您可以将文件转换为System.Data.DataSet
,其中包含Excel文件的每个工作表和数据。
DataSet dataSet = reader.AsDataSet();
答案 1 :(得分:1)
您可以使用ViewModel通过将其添加为属性来执行此操作:
查看强>
@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" />
}
<强>模型强>
public class AModel
{
public AModel()
{
Files = new List<HttpPostedFileBase>();
}
public List<HttpPostedFileBase> Files { get; set; }
// Rest of model details
}
您可以通过删除不需要的参数来检索文件,例如
<强>控制器强>
[HttpPost]
public ActionResult ShowExcelFile(AModel model)
{
var file = model.Files[0];
...
}
答案 2 :(得分:0)
不知道你是什么意思
使用getFile值
创建一些东西
获取文件使用的扩展
string fileExtension = Path.GetExtension(getFile.FileName);
//save this file using
string path = Path.Combine(Server.MapPath(Url.Content("~/Content")), "Name"+fileExtension);
file.SaveAs(path);