【发布时间】:2014-07-08 20:46:24
【问题描述】:
我的需求很简单——只需将 MVC 视图数据表导出到 Excel。 我搜索了许多不同的方法来将 Razor MVC4 视图导出到 Excel,发现这是一个很好的简单方法,但由于我不了解 ModelBase 概念,我对如何正确实现它有点困惑。我找到了几个使用此方法的示例,但无法让它们与我的解决方案一起使用。
http://landokal.wordpress.com/2011/04/28/asp-net-mvc-export-to-excel-trick/
public class ExcelResult<Model> : ActionResult
{
string _fileName;
string _viewPath;
Model _model;
ControllerContext _context;
public ExcelResult(ControllerContext context, string viewPath, string fileName, Model model)
{
this._context = context;
this._fileName = fileName;
this._viewPath = viewPath;
this._model = model;
}
protected string RenderViewToString()
{
using (var writer = new StringWriter())
{
var view = new WebFormView(_context, _viewPath);
var vdd = new ViewDataDictionary<Model>(_model);
var viewCxt = new ViewContext(_context, view, vdd, new TempDataDictionary(), writer);
viewCxt.View.Render(viewCxt, writer);
return writer.ToString();
}
}
void WriteFile(string content)
{
HttpContext context = HttpContext.Current;
context.Response.Clear();
context.Response.AddHeader("content-disposition", "attachment;filename=\"" + _fileName + "\"");
context.Response.Charset = "";
context.Response.ContentType = "application/ms-excel";
context.Response.Write(content);
context.Response.End();
}
public override void ExecuteResult(ControllerContext context)
{
string content = this.RenderViewToString();
this.WriteFile(content);
}
}
我还使用相同的方法找到了这篇类似的帖子。 Excel Result not giving me anything, but it runs fine
我没有像上面那样使用 AJAX,而只是现有页面上的一个简单操作链接,它显示来自 DB 的数据结果的表格视图。
@Html.ActionLink("Export to Excel", "ExcelExport")
我尝试按照上面的示例并在下面创建了一个 ActionResult,但我不明白我应该用什么代替下面的“ModelBase”,因为它不喜欢这种语法。
public ActionResult ExcelExport()
{
List<TrainingSwipe> viewModel = _db.TrainingSwipes
.OrderBy(v => v.SwipeDateTime).ToList();
return View(viewModel);
return new ExcelResult<ModelBase>
(
ControllerContext,
"Export.aspx",
"ExcelExport",
viewModel
);
}
【问题讨论】:
标签: asp.net-mvc-4 entity-framework-5 export-to-excel export-to-csv