Tre*_*ntD 3 c# asp.net-mvc excel export-to-excel
我目前正在编写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();
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试将Response.ContentType设置为其他值("application/excel","application/ms-excel"),但无济于事.我对ASP.NET和C#一般都是新手,因此可能会有一些我在这里缺少或做错的事情; 我更习惯PHP和Zend.您将给予的任何见解或帮助将不胜感激; 谢谢!
您正在将HTML表格编写为Excel文件.基本上,你正在用这个文字:
<table>
<tr>
<td>
Stuff
</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
并将其写为带.xls扩展名的文本文件.Excel足够"智能"(如果你可以称之为)打开文件并正确显示它,尽管它会提醒你文件实际上不是xls文件.
您需要处理它(不是一个好的解决方案),将表中的数据转换为csv并发送CSV(一个更好的解决方案)或使用Excel库创建一个实际的Excel文件并发送它.其中,CSV可能是最简单的.
| 归档时间: |
|
| 查看次数: |
3863 次 |
| 最近记录: |