使用C#将网格视图导出为Excel

时间:2016-07-20 09:51:22

标签: c# asp.net excel

我创建了一个页面,它将接受SharePoint列表名称作为查询字符串并生成一个Excel文件

我正在尝试使用以下代码导出到excel

ListName = ListName.Replace(" ", "");
string attachment = "attachment; filename=" + ListName + ".xls";
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
HttpContext.Current.Response.AddHeader("content-disposition", attachment);
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel 8.0";
HttpContext.Current.Response.Charset = "";
StringWriter sw = new StringWriter();
HtmlTextWriter htmlwriter = new HtmlTextWriter(sw);
gridview.DataSource = _dtFramedTable;
gridview.DataBind();

htmlwriter.AddAttribute("xmlns:x", "urn:schemas-microsoft-com:office:excel");
htmlwriter.RenderBeginTag(HtmlTextWriterTag.Html);
htmlwriter.RenderBeginTag(HtmlTextWriterTag.Head);
htmlwriter.RenderBeginTag(HtmlTextWriterTag.Style);
htmlwriter.Write("br {mso-data-placement:same-cell;}");
htmlwriter.RenderEndTag();
htmlwriter.RenderEndTag();
htmlwriter.RenderBeginTag(HtmlTextWriterTag.Body);
gridview.RenderControl(htmlwriter);
htmlwriter.RenderEndTag();
htmlwriter.RenderEndTag();
HttpContext.Current.Response.Write(HttpUtility.HtmlDecode(sw.ToString()));
HttpContext.Current.Response.Flush();
HttpContext.Current.ApplicationInstance.CompleteRequest();
HttpContext.Current.Response.Close();

这会将gridview导出为ex​​cel,但是当我打开excel文件时,它会显示

  

文件格式和扩展名不匹配。该文件可能已损坏   或者不安全,除非你信任来源,不要打开它

如何避免这种情况?

2 个答案:

答案 0 :(得分:0)

HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=\""+Export.xls+"\"; filename*=UTF-8''"+Uri.EscapeDataString(Export.xls)); );

答案 1 :(得分:0)

HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "example.xls"))
相关问题