C#中如何将GridView数据导入到Excel,请指教!

tushadongjing 2007-05-25 10:47:34
我从数据库查出一些数据绑定到一个GridView,
我想把GridView的数据导入到Excel表格,可以做到吗?
我以前在VB中可以将DataGrid中数据导入到Excel,但是C#我不会,请指教!
...全文
557 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanyuetaxue 2009-03-10
  • 打赏
  • 举报
回复

在cs文件中加入以下代码即可
public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}

意思就是重写方法,要求对页面的数据进行验证
tushadongjing 2007-06-10
  • 打赏
  • 举报
回复
不好意思,最近忙得起飞了一直没给回复,万分歉意!
我在C#中如果用datagrid导入excel表格可以做到
但是用GridView就不行了,提示:
System.Web.HttpException was unhandled by user code
ErrorCode=-2147467259
Message="Control 'GridView' of type 'GridView' must be placed inside a form tag with runat=server."
Source="System.Web"
StackTrace:
at System.Web.UI.Page.VerifyRenderingInServerForm(Control control)
at System.Web.UI.WebControls.GridView.Render(HtmlTextWriter writer, Boolean renderPanel)
at System.Web.UI.WebControls.GridView.Render(HtmlTextWriter writer)
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
at _Default.btnGenerate_Click(Object sender, EventArgs e) in D:\EFORM\Report\Test\Test.aspx.vb:line 44
at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
同样的错误在VB中用datagrid可以导入Excel表格,但是GridView就不可以了,也是一样的错误
代码如下:
页面:
<%@ Page Language="VB" Debug="true" AutoEventWireup="false" CodeFile="Test.aspx.vb" Inherits="_Default" %>

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

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Report Test</title>
</head>
<body>
<form id="form1" runat="server">
<div>
 </div>
<asp:Button ID="btnGenerate" runat="server" Text="Generate" />
<asp:DataGrid ID="DataGrid" runat="server" Width="50%"><ItemStyle Font-Size="X-Small" />
<HeaderStyle Font-Bold="True" Font-Size="X-Small" />
</asp:DataGrid><br />
<asp:GridView ID="GridView" runat="server" Width="50%">
</asp:GridView>
</form>
</body>
</html>

后台:
Imports System.Data
Imports System.Data.SqlClient

Partial Class _Default
Inherits System.Web.UI.Page

Dim DBConnection As New DB.DBConnection
Dim ds As New DataSet
Dim strSQL As String


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

If Page.IsPostBack = False Then

End If

End Sub

Protected Sub btnGenerate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGenerate.Click

Dim tw As New System.IO.StringWriter()
Dim hw As New System.Web.UI.HtmlTextWriter(tw)

strSQL = "select * from Combobox_master"
Dim da As New SqlDataAdapter(strSQL, DBConnection.GetConnection)
da.Fill(ds)
'DataGrid.DataSource = ds
'DataGrid.DataBind()
GridView.DataSource = ds '第一次用datagrid可以,换成GridView就不可以了
GridView.DataBind()

Response.Clear()
Response.Charset = "gb2312"
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312")
Response.AddHeader("content-disposition", "attachment;filename= TestReport.xls")
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
Response.Cache.SetCacheability(HttpCacheability.Private)
Response.ContentType = "application/vnd.ms-excel"
Response.Charset = ""

Me.EnableViewState = False
'DataGrid.RenderControl(hw)
GridView.RenderControl(hw)
Response.Write(tw.ToString())
Response.End()

End Sub

End Class
yuanxiaolei 2007-05-31
  • 打赏
  • 举报
回复
http://www.zzcx.net.cn/
zhenlogo 2007-05-25
  • 打赏
  • 举报
回复
这样就可以了!
zhenlogo 2007-05-25
  • 打赏
  • 举报
回复
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";
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.GridView1.RenderControl(oHtmlTextWriter);
Response.Output.Write(oStringWriter.ToString());
Response.Flush();
Response.End();
hundsun 2007-05-25
  • 打赏
  • 举报
回复
vb.net和C#好像差别不大哦

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧