Private Sub ToExcel(ByVal ctl As System.Web.UI.Control)
        Response.Clear()
        Response.Buffer = True
        Response.Charset = "gb2312"
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312")
        Response.AppendHeader("Content-Disposition", "attachment;filename=" & FormatDateTime(Now(), 2) & "_" & HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes("test")) & ".xls")
        Response.ContentType = "application/ms-excel"        ctl.EnableViewState = False
        'Page.EnableViewState = False
        Dim tw As System.IO.StringWriter = New System.IO.StringWriter
        Dim hw As HtmlTextWriter = New HtmlTextWriter(tw)
        ctl.RenderControl(hw)
        Response.Write(tw.ToString())         'GC.Collect()   '释放excel对象
        'tw.Close()
        'hw.Close()
        Response.OutputStream.Flush()
        Response.End()
        '  ctl.EnableViewState = True
    End Sub这个可以导出到EXCEL 保存好EXCEL 就不能操作其他操作(比如根据DROPDOWNLIST控件设置了AutoPostBack为True的提示类似脚本错误:“拒绝访问”;不能进去其他页面)  但是在本页面可以点击其他按钮后便可以操作!请问是什么原因?或者其他好的方法导出数据!!

解决方案 »

  1.   

    可以将当前表格的html代码提交到另外一个页面,在另外一个页面使用上边的方法输出到excel
      

  2.   

    直接写EXCEL
    这样导有很多垃圾
      

  3.   

    先写成EXCEL文件bbb.xls,然后
    response.redirect("bbb.xls")
      

  4.   

    看一下小山的http://singlepine.cnblogs.com/articles/305843.html
      

  5.   

    开excel applacation也不是好办法
      

  6.   

    如果数据量不大。。那就直接一点点的往excel里面写。如果多。那就按照一楼的来
      

  7.   

    一楼的方法其实是把HTML以纯文本的方式存成后缀为XLS的文件,其实就是个HTML的TABLE
    但是EXCEL可以认,担不是真正意义上的EXCELDCOM弄出来的EXCEL是真正的,但是要写服务器文件,而且牵扯到杀进程的问题,比较麻烦。
      

  8.   

    因为最后使用了Response.End();表示页面的请求全部都结束了。所以其他的操作就失效了。
    如果可以,把导出的页面放入一个iframe中,这样就不会有影响了。
      

  9.   

    http://zhangyu028.cnblogs.com/articles/296852.html
      

  10.   

    楼上Mirricle(Miracle Supply)说得没错,其实这段代码仅仅是让客户端首先是别这个HTTP请求返回为xls并用Excel打开。但实际上Excel打开后会马上发觉这不是二进制的xls文件,而是一个HTML Table,然后它就尝试去识别这个Table并打开。