2013-09-20 3 views
1

У меня возникли проблемы с экспортом моего gridview в файл excel. Все работает, кроме случаев, когда я нажимаю кнопку экспорта, вместо этого на веб-странице отображаются данные, которые предполагается экспортировать в файл excel. Я подозреваю, что это проблема с Response.ContentType и именем файла, которое я указал. Тем не менее, я уже прошел несколько документов и примеров, и, похоже, эти два не являются коренными проблемами в моем случае. Может ли кто-нибудь помочь?Vb.net export gridview to excel

<asp:Button ID="btnExport" runat="server" Text="Export To MS Excel File" CssClass="btnMain" OnClick="btnExport_Click" />  




Protected Sub btnExport_Click(ByVal sender As Object, ByVal e As System.EventArgs) 

     Dim filename As String = "PerformanceEval Status Report" & Date.Now.Year.ToString & "-" & _ 
            formatNumberTo2Digits(DateTime.Now.Month) & "-" & formatNumberTo2Digits(DateTime.Now.Day) & ".xls" 

     With Page.Response 

      .Clear() 
      .Buffer = True 
      .AddHeader("content_disposition", "attachment;filename" & filename) 
      .Charset = "" 

      '--to open the Excel file without saving then comment out the line below 
      '.Cache.SetCacheability(HttpCacheability.NoCache) 

      '.ContentType = "application/vnd.xls" 'data appears on web page 
      '.ContentType = "application/vnd.ms-excel" 'try to download .aspx document NOT .xml 
      .ContentType = "application/ms-excel" 'data appears on web page 

     End With 


     Dim strWriter As New System.IO.StringWriter 
     Dim htmlWriter As System.Web.UI.HtmlTextWriter = New HtmlTextWriter(strWriter) 

     Dim gvexport As GridView = New GridView 
     gvexport.AutoGenerateColumns = False 
     gvexport.CssClass = "gridData" 
     gvexport.GridLines = GridLines.Horizontal 
     gvexport.HeaderStyle.CssClass = "gridHeader" 
     gvexport.RowStyle.CssClass = "gridRow" 
     gvexport.AlternatingRowStyle.CssClass = "gridRow_Alt" 
     gvexport.FooterStyle.CssClass = "gridFooter" 

     Dim dv As DataView = New DataView(Me.ds.Tables(0)) 'default is sorted by last name 
     'Dim dv As DataView = New DataView(Me.ds.Tables(0)) 
     dv.RowFilter = GetFilter() 

     '-- add columns for report 
     addGVcolumn("Employee Name", "EmployeeName", gvexport, -1, HorizontalAlign.Left) 
     addGVcolumn("Employee ID", "SID", gvexport, -1, HorizontalAlign.Left) 
     addGVcolumn("Email", "WorkEmail", gvexport, -1, HorizontalAlign.Left) 
     addGVcolumn("StatusID", "StatusID", gvexport, 50, HorizontalAlign.Center) 

     gvexport.DataSource = dv 
     gvexport.DataBind() 

     gvexport.RenderControl(htmlWriter) 

     Response.Output.Write(strWriter.ToString()) 

     Response.Flush() 
     Response.End() 

Опять же, я могу сгенерировать контент, но не могу сделать свой экспорт данных в excel. Большое спасибо!

+0

у вас есть '' C# ответить здесь [GridView экспорт данных, чтобы преуспеть в asp.net] (http://stackoverflow.com/questions/15832339/gridview -data-export-to-excel-in-asp-net) –

ответ

0

Вы даете неправильный заголовок:

.AddHeader "content-disposition", "attachment; filename="& filename &";" 
+0

Yayyy! Спасибо огромное! Это полностью делает мой день! Для типа содержимого мне нужно изменить его на «application/vnd.ms-excel», чтобы заставить его функционировать! – CYC0616

+0

@ CYC0616 Пожалуйста, не забудьте принять ответ. – IvanH

+0

Зачем мне эта точка с запятой? Например, http://www.webcodeexpert.com/2013/06/how-to-bind-and-export-gridview-data-to_21.html#.Ujx4zoakrCc не отображает его? – CYC0616