protected void btExcel_Click(object sender, EventArgs e)
    {
        DataSet ds = new DataSet();
        ds = Session["myDataSet"] as DataSet;
        DataTable DT = ds.Tables[0];
        //生成将要存放结果的Excel文件的名称
        string NewFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
        //转换为物理路径
        NewFileName = Server.MapPath("~/Temp/" + NewFileName);
        //根据模板正式生成该Excel文件
        File.Copy(Server.MapPath("~/Temp/Module01.xls"), NewFileName, true);
        //建立指向该Excel文件的数据库连接
        string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + NewFileName + ";Extended Properties='Excel 8.0;'";
        OleDbConnection Conn = new OleDbConnection(strConn);
        //打开连接,为操作该文件做准备
        Conn.Open();
        OleDbCommand Cmd = new OleDbCommand("", Conn);

foreach (DataRow DR in DT.Rows)
        {
            string XSqlString = "insert into [Sheet1$]";
            XSqlString += "([举办年度],[名称],[主题],[举办时间],[举办地点],[承办单位],[预算],[实际规模],[评价]) values(";
            XSqlString += "'" + DR["Year"] + "',";
            XSqlString += "'" + DR["CampName"] + "',";
            XSqlString += "'" + DR["Topic"] + "',";
            XSqlString += "'" + DR["HeldTime"] + "',";
            XSqlString += "'" + DR["HeldPlace"] + "',";
            XSqlString += "'" + DR["UndertakeDep"] + "',";
            XSqlString += "'" + DR["Budget"] + "',";
            XSqlString += "'" + DR["ActualScale"] + "',";
            XSqlString += "'" + DR["Remarks"] + "')";
            Cmd.CommandText = XSqlString;
            Cmd.ExecuteNonQuery();
        }

//操作结束,关闭连接
        Conn.Close();
        //打开要下载的文件,并把该文件存放在FileStream中
        System.IO.FileStream Reader = System.IO.File.OpenRead(NewFileName);
        //文件传送的剩余字节数:初始值为文件的总大小
        long Length = Reader.Length;

Response.Buffer = false;
        Response.AddHeader("Connection", "Keep-Alive");
        Response.ContentType = "application/octet-stream";
        Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode("夏令营信息.xls"));
        Response.AddHeader("Content-Length", Length.ToString());

byte[] Buffer = new Byte[10000];  //存放欲发送数据的缓冲区
        int ByteToRead;           //每次实际读取的字节数

while (Length > 0)
        {
            //剩余字节数不为零,继续传送
            if (Response.IsClientConnected)
            {
                //客户端浏览器还打开着,继续传送
                ByteToRead = Reader.Read(Buffer, 0, 10000);     //往缓冲区读入数据
                Response.OutputStream.Write(Buffer, 0, ByteToRead); //把缓冲区的数据写入客户端浏览器
                Response.Flush();                  //立即写入客户端
                Length -= ByteToRead;                //剩余字节数减少
            }
            else
            {
                //客户端浏览器已经断开,阻止继续循环
                Length = -1;
            }
        }

//关闭该文件
        Reader.Close();
        //删除该Excel文件
        File.Delete(NewFileName);
           }

方法2:

private void Export(GridView gvUser, string Style, string FileType, string FileName)
    {
        Response.ClearContent();
        Response.Charset = "GB2312";
        Response.ContentEncoding = System.Text.Encoding.UTF8;
        Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8).ToString());
        Response.ContentType = FileType;
        //page.Response.ContentType = "application/ms-excel";
        Page.EnableViewState = false;
        StringWriter sw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        //turn off paging
        gvUser.AllowPaging = false;
        BindGrid(gvUser);

gvUser.RenderControl(hw);
        Response.Write(Style);
        Response.Write(sw.ToString());
        //page.Response.Flush();
        Response.End();

//turn the paging on again
        gvUser.AllowPaging = true;
        BindGrid(gvUser);
    }
    private void BindGrid(GridView gvUser)
    {
        DataSet ds = new DataSet();
        ds = Session["myDataSet"] as DataSet;
        gvUser.DataSource = ds;
        gvUser.DataBind();
    }
    public override void VerifyRenderingInServerForm(Control control)
    {
    }
    protected void GridViewCamp_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        LinkButton deleteLB = (LinkButton)e.Row.FindControl("lbDelete");
        if (deleteLB != null)
        {
            deleteLB.Attributes.Add("onclick", "return confirm('您确实要删除所选择的数据项吗?');");
        }
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
          e.Row.Cells[0].Attributes["class"] = "text";
        }
    }

protected void btExcel_Click(object sender, EventArgs e)
    {

string strStyle = @"<style> .text { mso-number-format:\@; }</style>";
        //string strStyle = "";
        Export(GridViewCamp,strStyle,"application/ms-excel", "myExcel.xls");
    }

前台界面设置:EnableEventValidation="false"

<%@ Page Language="C#" AutoEventWireup="true" EnableEventValidation="false" CodeFile="CampInfo.aspx.cs" Inherits="Default3" %>

转载于:https://www.cnblogs.com/longlong434/archive/2008/09/21/1295285.html

GridView导出为Excel相关推荐

  1. GridView导出到Excel和开源图表工具

    导出GridView到Excel 把GridView导出到Excel是一个很常用的功能,在网上搜索的解决方案都是一些零碎的代码,并且有很多问题,不是在所有环境下可以通用的,你甚至还有去处理一些这些代码 ...

  2. GridView导出到Excel或Word文件

    在项目中我们经常会遇到要求将一些数据导出成Excel或者Word表格的情况,比如中国移动(我是中国移动用户)网上查话费的页面中就有一个导出到Excel的功能,光大网上银行查看历史明细也有这些功能... ...

  3. ASP.NET 2.0中将 GridView 导出到 Excel 文件中

    下面代码实现将 GridView 导出到 Excel文件中. 值得注意的是VerifyRenderingInServerForm重载方法: MSDN上的 VerifyRenderingInServer ...

  4. Gridview导出到EXCEL

    为避免出错的准备 出错1:类型"GridView"的控件"GridView1"必须放在具有 runat=server 的窗体标记内 解决方案:在后台文件中重载V ...

  5. ASP.NET 2.0中将 GridView 导出到 Excel 文件中 (转)

    下面代码实现将 GridView 导出到 Excel文件中. 值得注意的是VerifyRenderingInServerForm重载方法: MSDN上的 VerifyRenderingInServer ...

  6. 解决gridview导出到excel中汉字出现乱码的问题

    我在用下面代码将gridview导出到excel中时,其中的汉字出现了乱码: protected void Button2_Click(object sender, EventArgs e)      ...

  7. Web页面打印及GridView导出到Excel

    打印Web页面 在头部<head>加入 打印事件 <script   language=javascript>      function   doPrint()   {    ...

  8. Gridview导出到Excel,Gridview中的各类控件,Gridview中删除记录的处理

    Asp.net 2.0中新增的gridview控件,是十分强大的数据展示控件,在前面的系列文章里,分别展示了其中很多的基本用法和技巧(详见< ASP.NET 2.0中Gridview控件高级技巧 ...

  9. GridView 导出为Excel

    /// <summary>     /// GridView数据导出到Excel表     /// </summary>     /// <param name=&quo ...

  10. GridView导出到Excel(可选择记录条数)

    最近有点空就喜欢去研究研究GridView的使用,所以你如果是想要学习这方面的东西可以来参观参观.^_^ 这里说明一下GridView到Excel的导出实现.平时你看到的GridView导出Excel ...

最新文章

  1. java 替换四个字节的字符 '\xF0\x9F\x98\x84\xF0\x9F)的解决方案
  2. 实验技术杂志文献20180126
  3. Yarn将用TypeScript重写,Flow惨遭亲爹抛弃!
  4. intern_充分利用Outreachy Intern申请流程
  5. 服务器装系统用哪个好,服务器系统重装用哪个系统
  6. 信息学奥赛一本通C++语言——1025:保留12位小数的浮点数
  7. 信息传输计算机服务业,信息传输软件和信息技术服务业包括哪些
  8. 模拟java_【最强Java面试题系列】消息队列面试场景 “模拟”
  9. filter过滤后重新添加_Kibana基本使用---使用Flight Dashboard过滤数据
  10. 单片机涡轮流量传感器_青天仪表为您介绍安装涡轮流量计需要注意问题
  11. 四个开放源代码审查工具【图文】
  12. sfp寄存器_SFP+-光模块测试指导
  13. 傅里叶变换和正弦函数和欧拉公式
  14. 再生龙移植ubuntu硬盘大小限制解决方案
  15. 前端必会的anime动画库
  16. 实现多线程的方法有哪几种?
  17. cad 计算机图库,cad模型图库(cad图库怎么用)
  18. 原创记忆小游戏-HTML网页版
  19. 极限切割异形图形描述脚本语言:Q代码指南
  20. 关于海外网红营销,我想给你提五点建议

热门文章

  1. 修改6S Fortran77 代码,建立查找表
  2. 转:数据库关系模式的范式详解
  3. Oracle9i 问题汇总--不断更新中
  4. 随机排列_“按字母顺序排列”其实是种随机顺序
  5. java版本号分段比较_Java实现比较版本号
  6. mqtt 传文件断开连接的原因_MQTT PythonClient断开连接不当
  7. 抽象类必须要有抽象方法吗?
  8. Linus中帮助命令man
  9. java多张图片上传安卓,Android Rxjava+Retrofit2 多图片+文字上传
  10. java ranger rest_kafka ranger integration issuse