Reputation: 189
I am unable to export the filtered results to an Excel file. I am just learning ASP.Net and MVC.
I have looked at the suggestion here, but I can't get it to work. I am not very sure how to use the EditorTemplate mentioned in another link.
Currently, when I export, all the data gets exported regardless of the filter. How do I export what is displayed on the view to an Excel file, without using web forms?
Thank you..
Here is my view, Index.cshtml:
@model IEnumerable<ExportToExcel.Models.Student>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
@using (Html.BeginForm("Index","Student",FormMethod.Get))
{
<p>
Name: @Html.TextBox("NameSearch")
<input type="submit" value="Search" />
@Html.ActionLink("Export to Excel","ExportToExcel")
</p>
}
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.Age)
</th>
<th>
@Html.DisplayNameFor(model => model.Marks)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Age)
</td>
<td>
@Html.DisplayFor(modelItem => item.Marks)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.ID }) |
@Html.ActionLink("Details", "Details", new { id = item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.ID })
</td>
</tr>
}
</table>
In my controller, I have implemented the followings:
public ActionResult Index(string nameSearch)
{
var students = from m in db.Students
select m;
if (!String.IsNullOrEmpty(nameSearch))
{
students = students.Where(n => n.Name.Contains(nameSearch));
}
return View(students);
}
public ActionResult ExportToExcel()
{
GridView gv = new GridView();
//if (!String.IsNullOrEmpty(nameSearch))
//{
// gv.DataSource = db.Students.Where(n => n.Name.Contains(nameSearch)).ToList();
//}
//else
//{
// gv.DataSource = db.Students.ToList();
//}
gv.DataSource = db.Students.ToList();
gv.DataBind();
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/ms-excel";
Response.AddHeader("content-disposition", "attachment;filename=StudentList.xls");
Response.Charset = "";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
return RedirectToAction("Index");
}
Upvotes: 4
Views: 4427
Reputation: 247
public ActionResult ExportExcel()
{
var EmployeeList = (List<Employee>)Session["EmployeeList"];
//var EmployeeList = Session["EmployeeList"] as List<Product>;
//var EmployeeList = Session["EmployeeList"];
GridView grid = new GridView();
grid.DataSource = EmployeeList;
grid.DataBind();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=Employees.xls");
Response.ContentType = "application/ms-excel";
Response.Charset = "";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
grid.RenderControl(htw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
return RedirectToAction("Index");
}
Upvotes: 1