使用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 关闭Windows硬盘默认共享「建议收藏」

    在桌面建一个txt文档考入两种方式其中的一种,并将txt文件另存为reg后缀文件。第一种Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters] “AutoShareServer”=dword:00000000

    2022年4月16日
  • Java学习之JDBC篇

    Java学习之JDBC篇0x00前言在一些web开发或者是数据存储的时候,肯定会使用到数据库来进行数据存储。而在Java里面需要调用JDBC来对数据库进行操作。0x01JDBC概念Jav

    2021年12月12日
  • 使用SecureCRTPortable的过程中出现的乱码问题解决方式

    使用SecureCRTPortable的过程中出现的乱码问题解决方式各位小伙伴好:可能大家都遇到过使用SecureCRTPortable【以下简称CRT】查日志的过程中出现乱码问题,下面超哥给各位普及下对于乱码的处理方式:1,有可能是当前连接的服务器显示的编码不是utf-8的编码,那样的话就直接修改字符编码就好了,2,当上面的方式不起作用的时候你需要检查下你服务器里的配置喽,第一:执行命令:more…

    2022年5月2日
  • tuple object is not callable解决方案[通俗易懂]

    tuple object is not callable解决方案[通俗易懂]在按照书上的代码操作的时候,有些时候会遇到一些很奇怪的bug,标题就是一个这样的bug。操作实例的时候是用了shape函数为了解决这个bug,查了很多资料,都没有找到解决方案,最后不断尝试,并结合了一点经验解决了。解决之后发现问题也特别简单在python中,只有函数才是Callable(可Call的对象才是Callable)。但是tuple是一个数据类型,当然是不能Call(翻译成:使唤

    2022年10月23日
  • Git的安装与使用教程(超详细!!!)「建议收藏」

    Git的安装与使用教程(超详细!!!)「建议收藏」git提交全部文件1、get.add.gitaddxx命令可以将xx文件添加到暂存区,如果有很多改动可以通过getadd-A.来一次添加所有改变的文件。注意-A选项后面还有一个句点。gitadd-A表示添加所有内容,gitadd.表示添加新文件和编辑过的文件不包括删除的文件;gitadd-u表示添加编辑或者删除的文件,不包括新添加的文件。2.、git…

    2022年4月29日
  • pda手持终端软件下载_成为pda

    pda手持终端软件下载_成为pdaPDAF点亮主要参考《MT6763_MT6757_PDAF_Driver_and_Buf_mgr_Porting_Guide.pdf》1、什么是PDAF1.1PDAF的原理在了解相位对焦PDAF,PhaseDetectionAutoFocus之前,在网上肯定会搜到其他对焦方式。比如对比度对焦(反差对焦)CDAF,ContrastDetectionAutoFocus、激光对焦LDAF,LaserDetectionAutoFocus、双核对焦等。…

    2022年9月6日

发表回复

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

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