asp.net-mvc - 将过滤结果导出到 MVC 4 中的 Excel(无 Web 表单)

标签 asp.net-mvc excel asp.net-mvc-4 export-to-excel

我无法将筛选结果导出到 Excel 文件。我刚刚学习 ASP.Net 和 MVC。

我已查看建议 here ,但我无法让它工作。我不太确定如何使用另一个link中提到的EditorTemplate .

目前,当我导出时,无论过滤器如何,所有数据都会被导出。如何在不使用 Web 表单的情况下将 View 上显示的内容导出到 Excel 文件?

谢谢你..

这是我的观点,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>

在我的 Controller 中,我实现了以下内容:

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");
}

最佳答案

好的,设法找到答案。原创link .

基本上,将搜索结果存储在 session 中。然后,在导出期间从 session 中检索列表。

关于asp.net-mvc - 将过滤结果导出到 MVC 4 中的 Excel(无 Web 表单),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24208166/

相关文章:

asp.net - 如何使用暂存槽管理 Azure 应用服务中的 robots.txt

javascript - 从 Chrome 扩展程序动态创建 Google 表格?

python - 在python中将多个Excel文件(xlsx)附加在一起

excel - 如何用月份的日期填充数组?

javascript - 在模式窗口 MVC4 上显示下拉列表

c# - Web API 响应 xml 语言

c# - Office 365 与 Asp.net Web 应用程序(MVC 应用程序)的集成?

c# - ASP NET MVC 5 从服务器删除文件

asp.net-mvc - 使用 Redirect() 时将信息传回 View

c# - 如何在单击提交按钮时在 mvc4 中将文本框值从 View 获取到 Controller