分享:Asp.net 中GridView 怎样将数据导出到Excel中

绁室犹
2013-10-10 · TA获得超过3942个赞
知道小有建树答主
回答量:973
采纳率:100%
帮助的人:743万
展开全部
自己一直就是使用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),这个方法必须重写,否则会报错的,错误信息我也写的很清楚,这里我也不想再啰嗦了,大家自己看看我的注视,其实大家可以尝试尝试错误!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式