【发布时间】: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)
{
}
}
【问题讨论】:
-
它似乎不喜欢文件的编码。在第一行值中我看到一个  ,第二行有一个 & 和一个  。这意味着编码破坏了结果。
-
我尝试将数据从 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