【发布时间】:2014-01-13 18:57:24
【问题描述】:
我目前正在编写一个 ASP.NET MVC 5 控制器操作来将一些数据导出到 Excel 文件(使用我在此处找到的一些代码)。它工作......主要是。它输出一个 Excel 文件,我可以打开它,但在显示以下错误消息之前不能:
“'Export.xls' 的文件格式和扩展名不匹配。该文件可能已损坏或不安全。除非您相信它的来源,否则不要打开它。仍然要打开它吗?”
我继续选择“是”,然后它就会打开。我可以在我的机器上重新保存它并打开该文件,但我没有收到错误消息。否则它工作正常,唯一的另一个奇怪是文件的网格线的格式与 Excel 文件的格式不同,更像是 HTML 表格而不是 Excel 工作表。但是,奇怪的错误信息在这里是不能接受的,所以我必须修复它。
这是我的代码:
public void ExportExcel()
{
// DataObject is a class that fetches the data for this method
DataObject dataObj = new DataObject();
var grid = new GridView();
// dataObj.GetDataList returns a List<T> of data model class objects
grid.DataSource = dataObj.GetDataList();
grid.DataBind();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=Export.xls");
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
grid.RenderControl(htw);
byte[] byteArray = Encoding.ASCII.GetBytes(sw.ToString());
MemoryStream s = new MemoryStream(byteArray);
StreamReader sr = new StreamReader(s, Encoding.ASCII);
Response.Write(sr.ReadToEnd());
Response.End();
}
我已经尝试将 Response.ContentType 设置为其他值(“application/excel”、“application/ms-excel”),但无济于事。一般来说,我对 ASP.NET 和 C# 有点陌生,所以我可能在这里遗漏或做错了一些事情;我更习惯 PHP 和 Zend。您可以提供的任何见解或帮助将不胜感激;谢谢!
【问题讨论】:
-
旁注:您的示例代码看起来与 ASP.MVC 操作的外观完全不同...
Content或 File 会更有意义。 -
那个 File 方法看起来很整洁,感谢您指出这一点。 (就像我说我是 C# 新手 :))
标签: c# asp.net-mvc excel export-to-excel