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


相关推荐

  • DNS递归和迭代查询[通俗易懂]

    DNS递归和迭代查询[通俗易懂]转自:https://www.jianshu.com/p/6b502d0f2ede一、DNS解析分类DNS解析流程分为递归查询和迭代查询,递归查询是以本地名称服务器为中心查询,递归查询是默认方式,迭代查询是以DNS客户端,也就是客户机器为中心查询。其实DNS客户端和本地名称服务器是递归,而本地名称服务器和其他名称服务器之间是迭代二、DNS递归解析原理递归解析(或叫递归查询)是最常见,也是默…

    2022年6月6日
    158
  • android线程间通信的几种方法_Android线程间通信机制

    android线程间通信的几种方法_Android线程间通信机制讲解Handler机制的博文很多,我也看了很多,但说实话,在我对Handler几乎不怎么了解的情况下,每一篇文章我都没太看懂,看完之后脑子里还是充满了疑问。究其原因,是因为几乎每一篇文章一上来就开始深入Handler源码,使得在一些宏观的问题上还是充满疑问,如果你从来没接触过Handler,对一些基础的问题还充满疑问,那深入源码去探究根源肯定会有些吃力。下面,我就从一个初学者思考的角度,来讲一讲H…

    2022年10月7日
    3
  • QUIC简单介绍

    QUIC简单介绍

    2021年12月16日
    49
  • FM和FFM原理

    FM和FFM原理模型用途FM和FFM,分解机,是近几年出的新模型,主要应用于广告点击率预估(CTR),在特征稀疏的情况下,尤其表现出优秀的性能和效果,也数次在kaggle上的数据挖掘比赛中拿到较好的名次。FM原理特征编码时常用的one-hot编码,会导致特征非常稀疏(很多0值)。常用的特征组合方法是多项式模型,模型表达式如下: y(x)=w0+∑i=1nwixi+∑i=1n∑j=i+1nwijxixjy(x)=w…

    2022年5月20日
    50
  • 智能优化算法改进算法 -附代码[通俗易懂]

    智能优化算法改进算法 -附代码[通俗易懂]智能优化算法改进算法摘要:为了方便大家对智能优化算法进行改进,复现多种智能优化改进算法供大家参考。所有代码均根据已经发表的文章,来复现方便大家参考别人的原理,代码会不定时更新。1.文献复现:基于变因子加权学习与邻代维度交叉策略的改进乌鸦算法Matlab代码[1]赵世杰,高雷阜,于冬梅,徒君.基于变因子加权学习与邻代维度交叉策略的改进CSA算法[J].电子学报,2019,47(01):40-48.2.文献复现:自适应t分布变异的缎蓝园丁鸟优化算法Matlab代码[1]韩斐斐,刘升.基于自适

    2022年5月23日
    42
  • python输入方式大全

    python输入方式大全python输入方式总结写在开头:在学算法过程中想温习python结果发现连输入都不清楚我是菜鸡总结一下python的输入方式适用于各种网站的算法题目的输入格式单个输入 #单个输入n=input()#无参数默认返回字符串n=input(“有提示参数的输入”)#有提示性输入语句的输入,仍是以str类型返回n=int(input())#根据给定的类型输入,返回值类型intn=float(input())#根据给定的类型输入,返回

    2025年6月10日
    3

发表回复

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

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