WL

感受CODE中一点一滴的快乐
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

GridView数据输出至Excel

Posted on 2006-08-12 14:16  WL  阅读(381)  评论(0编辑  收藏  举报
本来以为在C#中将GridView的数据输出至Excel并不困难,没想到实际操作中还是出了问题!
通过网上搜索可以得到标准代码,大约都是出自Micorosoft的网站,大致如下:
Response.Clear()
Response.Buffer = True
Response.Charset = "GB2312"
Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.DateTime.Today.ToShortDateString() + ".xls")
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312")
Response.ContentType = "application/ms-excel"
Me.EnableViewState = False
Dim myCItrad As New System.Globalization.CultureInfo("ZH-CN", True)
Dim oStringWriter As New System.IO.StringWriter(myCItrad)
Dim oHtmlTextWriter As New System.Web.UI.HtmlTextWriter(oStringWriter)
GridView1.RenderControl(oHtmlTextWriter)
Response.Write(oStringWriter.ToString())
Response.End()

在VS2005中编译运行时却报错:
类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内!

经多方查阅资料得知,还需加入以下代码方可:
    public override void VerifyRenderingInServerForm(Control control)
    {
        //base.VerifyRenderingInServerForm(control);
    }

引用这个过程很令人费解,因为并没有实际的代码执行!!
然而这样确实可以运行正常了!!
这是第一个令我疑惑的地方,另一个问题是以上代码针对的是页面和代码合一的情况,如果我采用的是代码分离的写法,却又不行了!难道在cs文件中没有办法直接输出Excel吗,我没找到答案!!