当前位置: 首页 > news >正文

生成excel控制类

 /// <summary>
    /// 生成Execl控制类
    /// </summary>
    public class ExeclManager
    {
        /// <summary>
        /// 通过DataTable生成Execl
        /// </summary>
        /// <param name="DTInputDataTable">输入DataTable</param>
        public static void DataTableToExcel(System.Data.DataTable DTInputDataTable)
        {

            //创建输出的GridView
            GridView GVResponse = null;
            //创建会话
            HttpContext HCRequest = HttpContext.Current;

            System.IO.StringWriter strWriter = null;
            System.Web.UI.HtmlTextWriter htmlWriter = null;

            if (DTInputDataTable != null)
            {
                // 设置编码和附件格式
                HCRequest.Response.Clear();
                HCRequest.Response.Buffer = true;
                HCRequest.Response.ContentType = "application/vnd.ms-excel";
                HCRequest.Response.AddHeader("Content-Disposition", "inline;filename=Execl.xls");
                HCRequest.Response.ContentEncoding = System.Text.Encoding.UTF8;
                HCRequest.Response.Charset = "UTF-8";
                HCRequest.Response.Write("<html><head><meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">");
                // 导出excel文件
                strWriter = new System.IO.StringWriter();
                htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);

                // 为了解决GVResponse中可能进行了分页的情况,需要重新定义一个无分页的GridView
                GVResponse = new GridView();
                GVResponse.RowDataBound +=new GridViewRowEventHandler(GVResponse_RowDataBound);
                GVResponse.DataSource = DTInputDataTable;
                GVResponse.AllowPaging = false;
                GVResponse.DataBind();


                // 输出数据
                GVResponse.RenderControl(htmlWriter);
                HCRequest.Response.Write(strWriter.ToString());
                HCRequest.Response.Write("</body></html>");

                HCRequest.Response.End();
            }
        }
        static void GVResponse_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                //e.Row.Cells[0].Attributes.Add("style", "vnd.ms-excel.numberformat:@");//这里是将要导出到execl里的第一列格式化为字符类型。
                //e.Row.Cells[3].Attributes.Add("style", "vnd.ms-excel.numberformat:¥#,###.00");//这里是格式化为货币类型。
                for (int i = 0; i < e.Row.Cells.Count; i++)
                {                   
                    e.Row.Cells[i].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
                }
                //1) 文本:vnd.ms-excel.numberformat:@
                //2) 日期:vnd.ms-excel.numberformat:yyyy/mm/dd
                //3) 数字:vnd.ms-excel.numberformat:#,##0.00
                //4) 货币:vnd.ms-excel.numberformat:¥#,##0.00
                //5) 百分比:vnd.ms-excel.numberformat: #0.00%
            }
        }

        /// <summary>
        /// 通过SqlDataSource生成Execl
        /// </summary>
        /// <param name="SDSInputSqlDataSource">SqlDataSource</param>
        public static void SqlDataSourceToExcel(SqlDataSource SDSInputSqlDataSource)
        {

            //创建输出的GridView
            GridView GVResponse = null;
            //创建会话
            HttpContext HCRequest = HttpContext.Current;

            System.IO.StringWriter strWriter = null;
            System.Web.UI.HtmlTextWriter htmlWriter = null;

            if (SDSInputSqlDataSource != null)
            {
                // 设置编码和附件格式
                HCRequest.Response.ContentType = "application/vnd.ms-excel";
                HCRequest.Response.AddHeader("Content-Disposition", "inline;filename=Execl.xls");
                HCRequest.Response.ContentEncoding = System.Text.Encoding.UTF8;
                HCRequest.Response.Charset = "UTF-8";

                // 导出excel文件
                strWriter = new System.IO.StringWriter();
                htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);

                // 为了解决GVResponse中可能进行了分页的情况,需要重新定义一个无分页的GridView
                GVResponse = new GridView();
                GVResponse.DataSource = SDSInputSqlDataSource;
                GVResponse.AllowPaging = false;
                GVResponse.DataBind();

                // 输出数据
                GVResponse.RenderControl(htmlWriter);
                HCRequest.Response.Write(strWriter.ToString());
                HCRequest.Response.End();
            }
        }

        /// <summary>
        /// 通过GridView生成Execl
        /// </summary>
        /// <param name="GVInputGridView">GridView</param>
        public static void GridViewToExcel(GridView GVInputGridView)
        {

            //创建输出的GridView
            GridView GVResponse = null;
            //创建会话
            HttpContext HCRequest = HttpContext.Current;

            System.IO.StringWriter strWriter = null;
            System.Web.UI.HtmlTextWriter htmlWriter = null;

            if (GVInputGridView != null)
            {
                // 设置编码和附件格式
                HCRequest.Response.ContentType = "application/vnd.ms-excel";
                HCRequest.Response.AddHeader("Content-Disposition", "inline;filename=Execl.xls");
                HCRequest.Response.ContentEncoding = System.Text.Encoding.UTF8;
                HCRequest.Response.Charset = "UTF-8";

                // 导出excel文件
                strWriter = new System.IO.StringWriter();
                htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);

                // 为了解决GVResponse中可能进行了分页的情况,需要重新定义一个无分页的GridView
                GVResponse = GVInputGridView;
                GVResponse.AllowPaging = false;
                GVResponse.DataBind();

                // 输出数据
                GVResponse.RenderControl(htmlWriter);
                HCRequest.Response.Write(strWriter.ToString());
                HCRequest.Response.End();
            }
        }
    }

转载于:https://www.cnblogs.com/lifeifei/archive/2011/11/01/2231425.html

相关文章:

  • jdk和tomcat环境变量配置
  • SQL中的行号ROW_NUMBER()
  • 使用 CTTeleyphonyCenter 截获来去电及短信消息
  • 翻译]游戏主循环
  • Ural_1126. Magnetic Storms 单调队列
  • adb shell dumpsys 命令 查看内存
  • hibernate连接Mysql中文乱码处理
  • very_confusing
  • HDOJ4070
  • apche IIS .htaccess httpd.ini Rewrite RewriteRule详解
  • 60个数据窗口技巧(转)
  • Android基础之Android硬件
  • VIM之Project 项目管理工具
  • 复制构造函数与禁止复制即函数值传递的原理
  • 基于MINA构建简单高性能的NIO应用-一个简单的例子
  • php的引用
  • 【翻译】babel对TC39装饰器草案的实现
  • Java多态
  • Java基本数据类型之Number
  • Java小白进阶笔记(3)-初级面向对象
  • Linux各目录及每个目录的详细介绍
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 高度不固定时垂直居中
  • 关于使用markdown的方法(引自CSDN教程)
  • 每天10道Java面试题,跟我走,offer有!
  • 写代码的正确姿势
  • 新版博客前端前瞻
  • elasticsearch-head插件安装
  • kubernetes资源对象--ingress
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (poj1.2.1)1970(筛选法模拟)
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (算法)Game
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • . Flume面试题
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET 指南:抽象化实现的基类
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .NET企业级应用架构设计系列之技术选型
  • .NET性能优化(文摘)
  • .stream().map与.stream().flatMap的使用
  • /etc/skel 目录作用
  • [@Controller]4 详解@ModelAttribute
  • []串口通信 零星笔记
  • [Android]竖直滑动选择器WheelView的实现
  • [APIO2015]巴厘岛的雕塑
  • [Bugku]密码???[writeup]
  • [GN] 设计模式——面向对象设计原则概述
  • [hdu 1711] Number Sequence [kmp]