ASP.NET中<%=%>绑定信息导出到excel失败的问题请教

jazm 发布于 2014/06/17 09:45
阅读 203
收藏 0

问题描述:在信息详细页面,使用<%=%>绑定的数据数据无法被导出到excel文件.所有使用<%=%>绑定的部分在导出后均为空白。页面上本来就有的文本信息均能被导出

以下代码片段,引用自网络。导出功能有效。


//导出方法
        private void DBExport()
        {
            HttpContext.Current.Response.Charset = "GB2312";
            HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
            //有部分文章里使用的是UTF7,是因为在特殊情况下中文会出现乱码;这里建议使用UTF8,MSDN中提到UTF7没有UTF8安全性高;
            //下面两行可以保证其正确性,使用方法见代码中
            //Response.Write("<html><head><meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">");
            //Response.Write("</body></html>");
            //这里对文件名称时行了编码处理,以防止出现中文名称乱码的现象
            HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("文件名称.xls", Encoding.UTF8));
            //导出excel格式,因为格式不同,所以文件名称后缀要根据实际情况进行调整(.xls)
            HttpContext.Current.Response.ContentType = "vnd.ms-excel";
            //导出word格式,因为格式不同,所以文件名称后缀要根据实际情况进行调整(.doc)
            //HttpContext.Current.Response.ContentType = "vnd.ms-word";
            //导出html格式,因为格式不同,所以文件名称后缀要根据实际情况进行调整(.html)
            //HttpContext.Current.Response.ContentType = "text/HTML";

            //还有两种写法好像是可以直接输出图像,没来得及加以考证,不过应该不是像上边一样改下格式就可以的,应该是先创建图形对象才可以设置Response.ContentType才能输出
            //哪位有简单的方式希望贴出来,学习下,谢谢
            //HttpContext.Current.Response.ContentType = "image/GIF";
            //HttpContext.Current.Response.ContentType = "image/JPEG";

            //说明下 divid 是什么,这里应该是你要转出的控件,可以是服务器控件也可以的HTML控件(要加上  runat="server"否则这里是找不到控件的)
            //我的页面里是一个 div id="divid" runat="server" 里放了一个GridView用于显示数据
            divid.Page.EnableViewState = false;
            System.IO.StringWriter tw = new System.IO.StringWriter();
            HtmlTextWriter hw = new HtmlTextWriter(tw);
            divid.RenderControl(hw);
            //下边的三行才是数据的输出
            Response.Write("<html><head><meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">");
            HttpContext.Current.Response.Write(tw.ToString());
            Response.Write("</body></html>");

            Response.Flush();
            Response.Close();
        }
          
        //方法重写
        public override void VerifyRenderingInServerForm(Control control)
        {

        }
        
        //执行按钮
        protected void btnout_Click(object sender, EventArgs e)
        {
            DBExport();
        }


导出的excel文件截图

完整问题描述如上,有接触过类似导出问题的请不吝赐教。

谢谢!

加载中
0
陈阳阳阳
陈阳阳阳
没看到你是在哪里执行的导出操作,不过我的做法都是直接取数据库的数据来导出,而不是取页面上输出的数据。
返回顶部
顶部