2017-05-02 40 views
0

我導出一個GridView到Excel上的一個按鈕單擊事件表,但只有以下信息GridView中導出到excel給空Excel工作表

enter image description here
相反GridView的數據導出Excel表顯示。下面如果出口按鈕,裏面的代碼點擊

private void ExportGridView(object sender, EventArgs e) 
    { 
     Response.Clear(); 
     Response.Buffer = true; 
     Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls"); 
     Response.Charset = ""; 
     Response.ContentType = "application/vnd.ms-excel"; 
     using (StringWriter sw = new StringWriter()) 
     { 
      HtmlTextWriter hw = new HtmlTextWriter(sw); 

      //To Export all pages 
      GridView1.AllowPaging = false; 
      GridView1.DataBind(); 
      GridView1.RenderControl(hw); 

      //style to format numbers to string 
      string style = @"<style> .textmode { } </style>"; 
      Response.Write(style); 
      Response.Output.Write(sw.ToString()); 
      Response.Flush(); 
      Response.End(); 
     } 
    } 
    public override void VerifyRenderingInServerForm(Control control) 
    { 
     /* Verifies that the control is rendered */ 
    } 

同樣的代碼在ASPX的gridview的是

...... 
<asp:GridView ID="GridView1" runat="server" Font-Size="10pt" AllowSorting="True" 
       BackColor="White" BorderColor="#CCCCCC" AutoGenerateSelectButton="true" 
       OnSelectedIndexChanged="GridView1_SelectedIndexChanged" OnRowDataBound="GridView1_RowDataBound" OnSorting="GridView1_Sorting"> 
      <%--  <Columns> 
      .................... 
    <td> <asp:Button runat="server" ID="btnExport" Text="Export to Excel" onclick="btnExport_Click" /></td> 
    </tr> 
    </table> 
    </asp:Content> 
+0

如果你要綁定的GridView?你能分享完整的代碼隱藏代碼嗎? GridView數據庫綁定。 – priya777

+0

嘗試註釋掉首次寫入響應流的部分,即'Response.Write(style);'我的理論是,因爲這是excel看到的第一件事情,而不是表格標籤,所以它不會呈現爲一張桌子。另外,我應該指出,這並不是實現這一目標的最佳方式。是的,你可以輸出一個gridview的渲染(一個html表格)到Excel中,但這實際上並不一致。查看NPOI創建Excel文檔或類似的東西。 – sovemp

+0

@ priya777我解決了問題。其中一個原因是綁定導出按鈕單擊中的數據。 –

回答

0

我解決了issue.I沒有settting allowpaging假後的gridview的綁定。下面是完整的代碼:

private void ExportGridView(object sender, EventArgs e) 
{ 
    Response.Clear(); 
    Response.Buffer = true; 
    Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls"); 
    Response.Charset = ""; 
    Response.ContentType = "application/vnd.ms-excel"; 
    using (StringWriter sw = new StringWriter()) 
    { 
     HtmlTextWriter hw = new HtmlTextWriter(sw); 

     //To Export all pages 
     GridView1.AllowPaging = false; 
     //GridView1.DataBind(); 
     GridView1.RenderControl(hw); 

     //style to format numbers to string 
     string style = @"<style> .textmode { } </style>"; 
     Response.Write(style); 
     Response.Output.Write(sw.ToString()); 
     Response.Flush(); 
     Response.End(); 
    } 
} 

此外,另一個變化是在.aspx文件中我設置頁面EnableEventValidation =「假」