ASP.NET 2.0中将 GridView 导出到 Excel 文件中

本文介绍了一种将ASP.NET中的GridView控件数据导出到Excel文件的方法。通过编写VB代码,实现了网页上GridView数据的导出功能,并展示了如何设置响应头以确保文件正确下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面代码实现将 GridView 导出到 Excel文件中。

值得注意的是VerifyRenderingInServerForm重载方法:
MSDN上的 VerifyRenderingInServerForm 方法的描述:
  必须位于 <form runat=server> 标记中的控件可以在呈现之前调用此方法,以便在控件被置于标记外时显示错误信息。发送回或依赖于注册的脚本块的控件应该在 Control.Render 方法的重写中调用此方法。呈现服务器窗体元素的方式不同的页可以重写此方法以在不同的条件下引发异常。
  如果回发或使用客户端脚本的服务器控件没有包含在 HtmlForm 服务器控件 (<form runat="server">) 标记中,它们将无法正常工作。这些控件可以在呈现时调用该方法,以在它们没有包含在 HtmlForm 控件中时提供明确的错误信息。
  开发自定义服务器控件时,通常在为任何类型的输入标记重写 Render 方法时调用该方法。这在输入控件调用 GetPostBackEventReference 或发出客户端脚本时尤其重要。复合服务器控件不需要作出此调用。 没有这个方法,程序将报错。

 

代码:

 

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
Function CreateDataSource() As ICollection 
 
Dim dt As System.Data.DataTable = New System.Data.DataTable 
 
Dim dr As System.Data.DataRow 
 dt.Columns.Add(
New System.Data.DataColumn("id"GetType(Int32))) 
 dt.Columns.Add(
New System.Data.DataColumn("PkID"GetType(String))) 
 dt.Columns.Add(
New System.Data.DataColumn("Title"GetType(String))) 
 
Dim i As Integer = 0 
 
While i < 6 
   dr 
= dt.NewRow 
   dr(
0= i 
   dr(
1= "123456789123456789123456789" 
            dr(
2= "内容..."
   dt.Rows.Add(dr) 
   System.Math.Min(System.Threading.Interlocked.Increment(i),i
-1
 
End While 
 
Dim dv As System.Data.DataView = New System.Data.DataView(dt) 
 
Return dv 
End Function
 

Protected Sub Page_Load(ByVal sender As ObjectByVal e As EventArgs) 
 
If Not IsPostBack Then 
   GridView1.BorderWidth 
= Unit.Pixel(2
   GridView1.BorderColor 
= System.Drawing.Color.DarkOrange 
   GridView1.DataSource 
= CreateDataSource 
   GridView1.DataBind 
 
End If 
End Sub
 

Protected Sub Button1_Click(ByVal sender As ObjectByVal e As System.EventArgs) 
 Response.Clear 
 Response.Buffer 
= True 
 Response.Charset 
= "GB2312" 
 Response.AppendHeader(
"Content-Disposition""attachment;filename=FileName.xls"
 Response.ContentEncoding 
= System.Text.Encoding.UTF7 
 Response.ContentType 
= "application/ms-excel" 
 
Dim oStringWriter As System.IO.StringWriter = New System.IO.StringWriter 
 
Dim oHtmlTextWriter As System.Web.UI.HtmlTextWriter = New System.Web.UI.HtmlTextWriter(oStringWriter) 
 
Me.GridView1.RenderControl(oHtmlTextWriter) 
 Response.Output.Write(oStringWriter.ToString) 
 Response.Flush 
 Response.End 
End Sub
 

Public Overloads Overrides Sub VerifyRenderingInServerForm(ByVal control As Control) 
End Sub
 

Protected Sub GridView1_RowDataBound(ByVal sender As ObjectByVal e As GridViewRowEventArgs) 
 
If e.Row.RowType = DataControlRowType.DataRow Then 
   e.Row.Cells(
1).Attributes.Add("style""vnd.ms-excel.numberformat:@;"
 
End If 
End Sub


</script>


<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  
<title>将 GridView 导出到 Excel 文件中</title>
</head>
<body>
  
<form id="form1" runat="server">
    
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound"
      AutoGenerateColumns
="false">
      
<Columns>
        
<asp:BoundField HeaderText="序号" DataField="id" />
        
<asp:BoundField HeaderText="身份证号" DataField="PkID" />
        
<asp:BoundField HeaderText="网址" DataField="Title" ReadOnly="true" HtmlEncode="false" />
      
</Columns>
    
</asp:GridView>
    
<asp:Literal ID="HiddenOut" runat="server" />
    
<asp:Button ID="Button1" runat="server" Text="导出" OnClick="Button1_Click" />
  
</form>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码视野

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值