[asp.net-mvc]导出到 excel 中不工作

发布时间: 2017/3/25 1:45:22
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

导出到 Excel 的可下载内容,使用 AngularJS 和 ASP.NET MVC 一些问题。我最终的结果是什么也没有发生。

示例 ASP.NET 控制器的方法︰

[HttpPost]
public ActionResult ExportToExcel(Model form)
{
    var gv = new GridView();
    gv.DataSource = _service.getSomeStuff(form);
    gv.DataBind();
    Response.ClearContent();
    Response.Buffer = true;
    Response.AddHeader("content-disposition", "attachment; filename=Stuff.xls");
    Response.ContentType = "application/ms-excel";
    Response.Charset = "";
    var sw = new StringWriter();
    var htw = new HtmlTextWriter(sw);
    gv.RenderControl(htw);
    Response.Output.Write(sw.ToString());
    Response.Flush();
    Response.End();

    byte[] temp = System.Text.Encoding.UTF8.GetBytes(sw.ToString());
    return File(temp, "application/ms-excel");
}

吴 click 处理程序通过角控制器方法︰ 触发 >

function exportToExcel() {
    $http.post('/Controller/ExportToExcel/', vm.Model)
           .success(function (data) {
           })
           .error(function (data) {
                alerts.error(data);
            });
}

视图︰

<a href="" ng-click="vm.exportToExcel()">click me</a>

任何建议的我可能会做错了吗?

解决方法 1:

我做了什么像这样,不需要 AJAX 或任何 JS。调整,Razor 代码是所有所需。

第二,我个人的建议将不在所有转换为 Excel 文件。原因是,要求用户在他的本地机器上有办公室。这也意味着,你应该将你的项目上载到一个网站,该服务器计算机将需要 Office 安装,以生成您的 excel 文件。

我建议说,只使用 CSV 文件。如果用户已经安装了 Office,他们将能够使用 Excel 查看像任何电子表格文件。

这里是一些代码,将创建 CSV 从 dbset 在你 dbcontext,做使用调用 Export.csv StringBuilderReflection

public ActionResult Export()
    {
        StringBuilder str = new StringBuilder();
        var tmp = db.Users.FirstOrDefault();     
        Type comp = tmp.GetType();                // get type
        foreach (PropertyInfo prop in comp.GetProperties())
        {
            str.Append(prop.Name + ",");          //set column names
        }
        str.Replace(",", "\n", str.Length - 1, 1);
        foreach (object item in db.Users)
        {
            foreach (PropertyInfo prop in item.GetType().GetProperties())
            {
                try
                {
                    string a = prop.GetValue(item, null).ToString();
                    str.Append(a + ",");
                }
                catch (NullReferenceException)
                {
                    str.Append("null" + ",");           //for nulls, append string with "null"
                }
            }
            str.Replace(",", "\n", str.Length - 1, 1);
        }
        string csv = str.ToString();
        return File(new System.Text.UTF8Encoding().GetBytes(csv), "text/csv", "Export.csv");
    }

然后访问下载链接上你认为像这样的文件,您可以︰

<a href="@Url.Action("Export", "Controller")">click me</a>

希望这有助于。

赞助商