2016-07-20 16 views
0

我創建了一個網頁,其中將接受SharePoint列表名稱作爲查詢字符串,並生成一個Excel文件出口網格視圖擅長使用C#

我想導出使用下面的代碼

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到excel,但是當我打開excel文件時,它說

文件格式和擴展名不匹配。該文件可能會損壞 或不安全,除非您相信源,不要打開它

如何避免這種情況?

+0

你爲什麼要使用的HtmlTextWriter? –

+0

我將此頁面作爲iframefile在sharepoint visual webpart中使用C# –

回答

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

我試過了,但仍然收到警報消息 –

0
HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "example.xls")) 
+1

雖然這可能是正確的,但也許一行解釋會幫助海報理解,爲什麼這對他有幫助。 –

+0

我試着改變這個,但是警告信息還在 –