【问题标题】:import data from excel to mvc [duplicate]将数据从excel导入mvc [重复]
【发布时间】:2017-03-24 05:22:42
【问题描述】:

我正在尝试将数据从 excel 导入到 mvc

public void DownloadAsExcelOrderReports()
{
    try
    {
        var list = _reportWork.GetList();
        GridView gv = new GridView();
        gv.DataSource = list;
        gv.DataBind();
        Response.ClearContent();
        Response.Buffer = true;
        Response.ContentEncoding = System.Text.Encoding.UTF32;
        Response.AddHeader("content-disposition", "attachment; filename=Marklist.xls");
        Response.ContentType = "application/ms-excel";
        Response.Charset = "";
        using (StringWriter sw = new StringWriter())
        {
            using (HtmlTextWriter htw = new HtmlTextWriter(sw))
            {
                gv.RenderControl(htw);
                Response.Output.Write(sw.ToString());
                Response.Flush();
                Response.End();
            }
        }
    }
    catch (Exception ex)
    {

    }
}

这是我在网上找到的代码。我得到这样的输出。 通常它必须自动将表格填写到excel中。我看不到,我错过了什么。

【问题讨论】:

  • 它似乎不喜欢文件的编码。在第一行值中我看到一个 &nbsp,第二行有一个 &amp 和一个 &nbsp。这意味着编码破坏了结果。
  • 我尝试将数据从 MVC 导出到 excel。我不明白为什么;。什么?
  • @SeM 下面有解释,重点说一下
  • 有些字符在excel使用的编码中是不存在的,我认为这个视图是那些编码错误造成的,它找到一个不可读的字符然后停止解析,导致这个视图。解决此问题的最佳方法是在 HTMLWriter 或 StringWriter 中设置编码。
  • @SelmanErhan 您的代码创建的是 HTML,而不是 Excel。这是用于伪造 Excel 生成的黑客之一。不过完全没必要,用EPPlus之类的工具生成real Excel文件即可。甚至还有一个示例that shows how to generate an Excel file on the server

标签: c# asp.net-mvc excel asp.net-mvc-4


【解决方案1】:

GridView 是一个 WebControl。您将数据放入其中(DataBind),它会发出应该发送到浏览器的 html(RenderControl),浏览器会将其显示为表格(tr 和 td 标签)。

在您的情况下,您试图在 excel 文档中显示该 html 代码,这是没有意义的。

我发现最好的方法是使用 EPPlus,您可以从 NuGet 包管理器获得它。您必须将您的数据与您希望 Excel 文档的外观联系起来。这有点繁琐,但别无选择。

【讨论】:

  • 这并不复杂,它比试图伪造 Excel 文件要容易很多LoadFromDataTable 有什么好玩的?
  • 也许最好不要为已标记为重复的问题添加答案。这也是对库或工具的一般建议,而不是对直接问题的切实答案。
猜你喜欢
  • 1970-01-01
  • 2011-10-15
  • 1970-01-01
  • 2016-03-18
  • 1970-01-01
  • 2010-12-07
  • 2018-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多