自己一直就是使用Devexpress控件做的导出数据到Excel,今天做了一个asp控件的导出数据到Excel中,下面利用一点点时间给大家分享一下,也许网上很多源码,但是我觉得毕竟是自己手敲出来的,价值更值得和大家分享:

首先,我把前台的设计给贴出来:

   <div>  

   <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:GMConnectionString %>"     SelectCommand="SELECT * FROM [d_users]"></asp:SqlDataSource>

        <asp:Button ID="Button1" runat="server" Text="导出数据到Excel" OnClick="Button1_Click1" />

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="user_id"             DataSourceID="SqlDataSource1" BackColor="White" BorderColor="#999999" BorderStyle="None"  BorderWidth="1px"

Font-Size="12px" Width="500px" OnRowDataBound="GridView1_RowDataBound"    GridLines="Both" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing"             OnRowCancelingEdit="GridView1_RowCancelingEdit"  OnRowUpdating="GridView1_RowUpdating" PageSize="100">             <FooterStyle BackColor="#CCCCCC" ForeColor="Black" /> 

   <Columns>     

   <asp:TemplateField HeaderText="删除" InsertVisible="false">

   <ItemStyle HorizontalAlign="Center" />    

   <HeaderStyle HorizontalAlign="Center" Width="30" />

  <ItemTemplate>

      <asp:LinkButton ID="LblDel1" runat="server" CommandName="Delete">删除 </asp:LinkButton>      

 </ItemTemplate>

 </asp:TemplateField>       

    <asp:CommandField HeaderText="编辑" ShowEditButton="True" ItemStyle-HorizontalAlign="Center"   HeaderStyle-HorizontalAlign="Center" HeaderStyle-Width="100" />  

  <asp:TemplateField HeaderText="序号" InsertVisible="False">

  <ItemStyle HorizontalAlign="Center" />

 <HeaderStyle HorizontalAlign="Center" Width="40px" />    

 <ItemTemplate>    

<asp:Label ID="LblNum" runat="server" Text=' <%# this.GridView1.PageIndex * this.GridView1.PageSize +   this.GridView1.Rows.Count + 1%>' />     

 </ItemTemplate>   

    </asp:TemplateField>    

 <asp:BoundField DataField="user_id" HeaderText="user_id" ReadOnly="True" SortExpression="user_id" />                  <asp:BoundField DataField="user_name" HeaderText="user_name" SortExpression="user_name" />    

  <asp:BoundField DataField="user_real_name" HeaderText="user_real_name" SortExpression="user_real_name" />                 <asp:BoundField DataField="pwd" HeaderText="pwd" SortExpression="pwd" />  

 <asp:BoundField DataField="active" HeaderText="active" SortExpression="active" />  

  <asp:BoundField DataField="is_admin" HeaderText="is_admin" SortExpression="is_admin" />  

  </Columns>    

  </asp:GridView>

</div>

 在这说一下,我使用的是SqlDataSource作的数据源。

其次:一下是后台代码:

    protected void Button1_Click1(object sender, EventArgs e)  {  

           GridView1.Columns[0].Visible = false;   //隐藏删除    

           GridView1.Columns[1].Visible = false;   //隐藏编辑    

          StringWriter sw = new StringWriter();   

          HtmlTextWriter htmlwrite = new HtmlTextWriter(sw);  

          string excelName = "个人信息.xls";     

          Response.ContentType = "application/x-excel";    

          Response.AppendHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(excelName));              

          GridView1.RenderControl(htmlwrite);    

          Response.Write(sw.ToString());       

          Response.Flush();        

          Response.End();    

       }

     //此方法不能删除,如果没有下面方法会报错类型“GridView”的控件"ct100_ContentPlaceHolder1_GridView1”必须放在具有 runat=server 的窗体标记内     

  public override void VerifyRenderingInServerForm(Control control)    {     

        // Confirms that an HtmlForm control is rendered for        

         //如果要限制控件必须位于<form runat=server>标记以内,则请先呼叫这个方法,才进行展现,如此一来,如果控件放在标记以外,便会显示错误信息。

        }

 其实,我的代码很简单,就在页面放了个btn,”导出数据到Excel“按钮,然后在按钮下边写单击事件,需要注意的是很多朋友都说界面上设计的有comand列,不想吧这样的操作列的按钮也给导出来,此时,有个visible属性,你只需要设计下就好了,我在按钮下写了2行代码,已经标红显示了;然后在导出来之后还可以将该列设为可见即可。

接下来我需要强调的是最后我使用红色字体标红的一个方法(VerifyRenderingInServerForm),这个方法必须重写,否则会报错的,错误信息我也写的很清楚,这里我也不想再啰嗦了,大家自己看看我的注视,其实大家可以尝试尝试错误!

    今天我就和大家分享这么多,其实,这也是我工作中遇到了所以呢抽出了一点点时间和大家交流下,希望能对导出数据到Excel的朋友有所帮助,有问题大家可以提议!