使用RenderControl方法把GridView控件导出到EXCEL

使用RenderControl方法把GridView控件导出到EXCEL// 把GridView输出到Excel文件       privatevoidExportExcel(GridViewgridView,stringtitle,stringtitle2,stringfileName)       {           intnHideCols=0;           //如果不想输出出某列,将Visible

大家好,又见面了,我是你们的朋友全栈君。

 //  把GridView输出到Excel文件
        private void ExportExcel(GridView gridView, string title, string title2, string fileName)
        {

            int nHideCols = 0;
            //如果不想输出出某列,将Visible设为false即可
            for (int i = 0; i < gridView.Columns.Count; i++)
            {

                if (gridView.Columns[i].HeaderText == “设备状态”)
                {

                    gridView.Columns[i].Visible = false;
                    gridView.Columns[i].ControlStyle.Width = 0;
                    nHideCols = 1;
                    break;
                }
            }
            //设定显示字符集
            Response.Charset = “utf-8”;
            //设定内容字符集
            Response.ContentEncoding = Encoding.GetEncoding(“utf-8”); 

           Asp.net中Response.Charset 与Response.ContentEncoding区别 


            //设定文件名
            Response.AppendHeader(“Content-Disposition”, “attachment;filename=” + HttpUtility.UrlEncode(fileName, Encoding.UTF8).Replace(‘+’, ‘_’).Replace(‘-‘, ‘_’));
            //设定文件类型   也可以是application/ms-word,也可以是text/html(字符集设为gb2312)
            Response.ContentType = “application/ms-excel”;
            this.EnableViewState = false;
            using (StringWriter tw = new StringWriter())
            {

                using (HtmlTextWriter hell = new HtmlTextWriter(tw))
                {

                    gridView.AllowPaging = false;
                    gridView.RenderControl(hell);

                    string s = tw.ToString();
                    s = s.Replace(“\r\n”, “”);
                    int index = s.IndexOf(“<tr”);
                    //可以自定义Excel文件的标题
                    string head = “<tr><td colspan=\”” + (gridView.Columns.Count – nHideCols).ToString() + “\” style=\”text-align: center; height: 42px; font-size: 24px; font-weight: bolder; color: #000000;\”>” + title + “</td></tr>” +
                            “<tr><td colspan=\”” + (gridView.Columns.Count – nHideCols).ToString() + “\” style=\”text-align: center; height: 24px; font-size: 12px; color: #000000;\”>” + title2 + “</td></tr>”;
                    //使用Index来判断是否存在数据,当然也可以用gridView.Rows.Count来判断
                    if (index != -1)
                    {

                        //有数据的
                        s = s.Insert(index, head);
                    }
                    else
                    {

                        //没有数据的时候
                        s = “<table cellspacing=\”0\” cellpadding=\”3\” rules=\”rows\” border=\”1\” id=\”” + gridView.ID + “\” style=\”background-color:White;border-color:#E7E7FF;border-width:1px;border-style:None;border-collapse:collapse;\”>” +
                            head + “</table>”;
                    }
                    Response.Write(s);
                    Response.End();
                }
            }
        }

        //同时vs2005,vs2003会报错“类型“ExGridView”的控件“GridViewMaster”必须放在具有 runat=server 的窗体标记内
        //需要添加下面取消对GridViewMaster 控件验证的方法
        public override void VerifyRenderingInServerForm(Control control)
        {

            if (!control.GetType().Equals(gridView.GetType()))
            {

                base.VerifyRenderingInServerForm(control);
            }
        }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162030.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 京东云服务器_docker 京东自动签到

    京东云服务器_docker 京东自动签到众所周知,京东的京豆可以在付款时抵扣现金支付,多攒京豆还是能省下一部分钱的,而且京豆的获取页很简单,其中一种就是通过签到的方式获得,而每天手动签到实在太过麻烦,如果能实现自动化就好了,这时,依靠于openwrt,京东自动签到插件就诞生了,在路由器上设置一下便可以一劳永逸,无需人工全部自动化完成,签到后可以自动将签到详细结果推送到手机的微信上,这种签到方式是在自己的路由器上,完全不用担心安全和隐私泄…

    2022年9月17日
    0
  • mybatis逆向工程配置文件_mybatis逆向工程多表查询

    mybatis逆向工程配置文件_mybatis逆向工程多表查询mybatis逆向工程很早之前有用过,但是一直没有整理使用步骤,今天来回顾下在idea下springboot中整合mybatis逆向工程的实现步骤什么是逆向工程?所谓mybatis逆向工程,就是mybatis会根据我们设计好的数据表,自动生成pojo、mapper以及mapper.xml。本文将介绍两种方式实现mybatis的逆向工程。generatorConfig.xml配置文件配置数据…

    2022年8月21日
    2
  • 如何关闭vscode git工具[通俗易懂]

    如何关闭VScode工具的git提示只需要关闭用户设置里的Git:Enabled即可;第一步,我们只需要打开”文件->首选项->设置”第二步,在搜索栏中搜索git:Enabled,关闭即可;…

    2022年4月10日
    1.4K
  • 数据库习题及答案5

    数据库习题及答案5模拟测验1一、1 2 3 4 5 6 7 8 9 10A D C c D A C A A C一、选择题(在每个小题四个备选答案中选出一个正确答案,填在题末的括号中)(本大题共10小题,每小题2分,总计20分)()是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。数据库在建立、使用和维护时由其统一管理、统一控制。A.DBMSB.DBC.DBSD.DBA下列四项中,不属于SQL2005实用程序的是()。A.对象资源管理器B.查询分析.

    2025年6月9日
    0
  • linux 重启nginx命令「建议收藏」

    linux 重启nginx命令「建议收藏」/usr/local/nginx/sbin/nginx-sreload

    2022年6月19日
    20
  • ubuntu下vscode的使用教程_vscode连接ubuntu虚拟机

    ubuntu下vscode的使用教程_vscode连接ubuntu虚拟机1、安装ffmpegwgethttps://ffmpeg.org/releases/ffmpeg-4.1.tar.bz2tar-xjvfffmpeg-4.1.tar.bz2./configure–prefix=/usr/local/ffmpeg–enable-gpl–enable-version3–enable-nonfree–enable-postproc–enable-pthreads–enable-libfdk-aac–enable-libmp3lame

    2022年9月24日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号