我想将网格导出为excel。如果网格有100行或更少的行,一切正常。但我的网格有超过2000行。我没有收到任何错误或异常,但导出后文件没有打开,Excel停止工作。当我打开文件时,我收到一条警告消息,如"' filename.xls'的文件格式和扩展名。不匹配。该文件可能已损坏或不安全。除非你相信它的来源,否则不要打开它。你想打开吗?"。
我正在使用以下代码
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", string.Format("attachment; filename= {0}", "IAParts.xls"));
Response.ContentType = "application/ms-excel";
System.IO.StringWriter sw = new System.IO.StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
GridView1.AllowPaging = false;
BindGrid();//this method binds the data to grid
GridView1.RenderControl(htw);
Response.Write(sw.ToString());
sw.Flush();
Response.End();
答案 0 :(得分:0)
亲爱的朋友,关于扩展文件的错误,我可以说这是关于可以通过查看此链接解决的扩展加固
http://blogs.msdn.com/b/vsofficedeveloper/archive/2008/03/11/excel-2007-extension-warning.aspx
或在txt文件中使用此行并另存为.reg但这些行可以根据您的版本和需求进行更改[我为这些行编写了这些行]
[开始]
Windows注册表编辑器版本5.00
[HKEY_CURRENT_USER \软件\微软\办公室\ 15.0 \ EXCEL \安全] “ExtensionHardening”= DWORD:00000000
[结束]
之后你永远不会看到有关扩展或...的错误 并且对于使用excel文件,我为你提供了我在我的项目中搜索和使用的这个功能;)
public void ExportToExcel(DataTable dt)
{
if (dt.Rows.Count > 0)
{
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
DataGrid dgGrid = new DataGrid();
dgGrid.DataSource = dt;
dgGrid.DataBind();
dgGrid.RenderControl(hw);
Response.ContentType = "application/vnd.ms-excel"; // 2003 office excel
Response.AppendHeader("Content-Disposition", "filename=OutPut.xls");
string style = @"<style> TABLE { border: 1px solid black; border-collapse: collapse; } TD {mso-number-format:\@; }</style> ";
Response.Write(style);
Response.Write(tw.ToString());
Response.End();
}
}