原文发布时间为:2008-10-11 —— 来源于本人的百度文章 [由搬家工具导入]

这个例子是从gridview中导出到Excel,可以举一反三,可以直接从数据库中取值放在DataSet中,然后再从DataSet中导出到Excel,原理是一样的。。。。

例子:

网站文件夹中的所有内容:

excel中的内容:[具有固定的Excel表头]

后台代码:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.IO;
using System.Data.OleDb;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string NewFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
        NewFileName = Server.MapPath(NewFileName) ;
        //根据模板正式生成该Excel文件
        File.Copy(Server.MapPath("~/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 (GridViewRow gr in GridView1.Rows)
        {
            string sql = "insert into [Sheet1$]";
            sql += "([课程编号],[课程名字]) values(";
            sql += "'" + gr.Cells[0].Text + "','" + gr.Cells[1].Text + "')";
            Cmd.CommandText = sql;
            Cmd.ExecuteNonQuery();
        }
        Conn.Close();
        //打开要下载的文件,并把该文件存放在FileStream中
        FileStream fs = File.OpenRead(NewFileName);
        //文件传送的剩余字节数:初始值为文件的总大小
        long length = fs.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[] buf = new byte[1000];

        //每次实际读取的字节数
        int ByteToRead;
        //剩余字节数不为零,继续传送
        while (length > 0)
        {
            //客户端浏览器还打开着,继续传送
            if (Response.IsClientConnected)
            {
                //往缓冲区读入数据
                ByteToRead = fs.Read(buf, 0, 1000);
                //把缓冲区的数据写入客户端浏览器
                Response.OutputStream.Write(buf, 0, ByteToRead);
                //立即写入客户端
                Response.Flush();
                //剩余字节数减少
                length -= ByteToRead;
            }
            else
            {
                //客户端浏览器已经断开,阻止继续循环
                length = -1;
            }
        }
        fs.Close();
        File.Delete(NewFileName);
    }
}

第二种方法:

protected void Button2_Click(object sender, EventArgs e)
    {
        Response.Clear();
        Response.Buffer = true;    
        Response.AddHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode("课程.xls")); //定义输出文件和文件名
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
        Response.ContentType = "Excel";//设置输出文件类型为excel文件。
        this.EnableViewState =false;
        System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);
        StringWriter oStringWriter = new StringWriter(myCItrad);
        HtmlTextWriter oHtmlTextWriter = new HtmlTextWriter(oStringWriter);
        this.GridView1.RenderControl(oHtmlTextWriter); //要导出的DataGrid
        Response.Write(oStringWriter.ToString());
        Response.End();
    }
    //上面的方法 还要在这个页面中重载这个方法 不然会出以下的异常
    // 类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内。
    public override void VerifyRenderingInServerForm(Control control)
    {
    }

从数据库的表导出到Excel表格中【让客户端下载的Excel】的更多相关文章

  1. 一个php将数据库的数据导出到excle表格中的小dome

    首先我们需要下载个PHPExcel,PHPExcel下载地址链接:https://pan.baidu.com/s/1nxpAc45 密码:qgct 下面来写个dome: <?php //把数据写 ...

  2. 根据excel表格中的内容更新Sql数据库

    关于[无法创建链接服务器 "(null)" 的 OLE DB 访问接口 SQL Server 2008读取EXCEL数据时,可能会报这个错误:无法创建链接服务器 "(nu ...

  3. 利用java反射机制实现读取excel表格中的数据

    如果直接把excel表格中的数据导入数据库,首先应该将excel中的数据读取出来. 为了实现代码重用,所以使用了Object,而最终的结果是要获取一个list如List<User>.Lis ...

  4. 读取Excel表格中数据原型

    写下这篇博客来记录自己的工作,这部分功能是读取Excel表格中的数据,并通过c#中的datagridview控件将读取的数据显示出来.为了方便用户,我设计了一个read按钮,用户点击这个按钮,会弹出打 ...

  5. MySQL中导入Excel表格中的数据

    在数据库中建立好响应的数据库.表(参考excel表格中列中的名字和内容): 将excel表格另存为txt文件,选择“文本文件(制表符分割)”: 打开相应的txt文件,只留下要导入的数据(windows ...

  6. excel表格中如何将内容粘贴到筛选后的可见单元格[转]

    默认情况下,筛选后excel表格进行复制粘贴,会贴到隐藏的表格. 可以添加两个辅助列来完成操作:1.在筛选前在表格右边添加"辅助1"列,在第二行输入1,按Ctrl+鼠标左键往下拉到 ...

  7. VBA取得EXCEL表格中的行数和列数

    VBA取得EXCEL表格中的行数和列数 初学EXCEL宏的童鞋,总是很想知道表格中含有数据的行数和列数,尤其是行数和列数不确定的情况下.这样可以避免很多的错误,并且可以提高效率.但每次用到的时候到网上 ...

  8. C#读取Excel表格中数据并返回datatable

    在软件开发的过程中,经常用到从excel表格中读取数据作为数据源,以下整理了一个有效的读取excel表格的方法. DataTable GetDataTable(string tableName,str ...

  9. C# 如何在Excel表格中插入、编辑和删除批注

    概述 为文档添加必要的批注可以给文档使用者提供重要的提示信息,下面的示例中,将介绍通过C#编程语言来给Excel表格中的指定单元格内容添加批注,此外,对于已有的批注,如果需要修改,我们也可以进行编辑或 ...

  10. 如何使用免费控件将Word表格中的数据导入到Excel中

    我通常使用MS Excel来存储和处理大量数据,但有时候经常会碰到一个问题—我需要的数据存储在word表格中,而不是在Excel中,这样处理起来非常麻烦,尤其是在数据比较庞大的时候, 这时我迫切地需要 ...

随机推荐

  1. content is king – Bill Gates (1/3/1996) 内容为王 - 比尔盖茨

    以下中文版本由谷歌翻译 内容为王 - 比尔盖茨(1/3/1996) 内容是我期望在互联网上赚取大部分真钱的地方,就像在广播中一样. 半个世纪前开始的电视革命催生了许多行业,包括制造电视机,但长期的赢家 ...

  2. 【PHP】$_SERVER整理

    PHP变成中经常需要用到服务器的一些资料,我在这里整理一下,方便查找.第一部分为比较常用的$_SERVER $_SERVER['HTTP_ACCEPT_LANGUAGE']//浏览器语言 $_SERV ...

  3. JZOJ 2499. 东风谷早苗

    2499. 东风谷早苗 (Standard IO) Time Limits: 1000 ms  Memory Limits: 131072 KB  Detailed Limits   Goto Pro ...

  4. JZOJ 5777. 【NOIP2008模拟】小x玩游戏

    5777. [NOIP2008模拟]小x玩游戏 (File IO): input:game.in output:game.out Time Limits: 1000 ms  Memory Limits ...

  5. python3.7 json模块

    #!/usr/bin/env python __author__ = "lrtao2010" #python3.7 json模块 ''' 要在不同的编程语言之间传递对象,就必须把对 ...

  6. A1083 List Grades (25)(25 分)

    A1083 List Grades (25)(25 分) Given a list of N student records with name, ID and grade. You are supp ...

  7. 7、python中的字典

    字典是python内置的一种无序.可变的数据结构. 字典也叫哈希表.什么是哈希表?哈希表就是会对表中的键(key)执行哈希计算,并根据计算结果在内存中分配一个区域来储存该键所对应的值(value).这 ...

  8. Gym 100829S_surf 动态规划的优化

    题目大意是,非你若干个任务,任务分别对应开始时间.预期收益.持续时间三项指标,让你从中选择一个受益最大的方案(没有开始时间相同的任务). 于是,标准状态转移方程应当为,设DP[K]为选择了前K个任务的 ...

  9. C#小知识点积累

    1.sealed 修饰符 概念: C#提出了一个密封类(sealed class)的概念,帮助开发人员来解决这一问题. 密封类在声明中使用sealed 修饰符,这样就可以防止该类被其它类继承.如果试图 ...

  10. 读书笔记jvm探秘之二: 对象创建

    对象是面向对象设计语言无法回避的东西,可见其重要性,JAVA的对象相较于C++来说,不算很复杂,但是我们看到一句话背后往往有很多东西值得探讨(NEW关键字). 对象如何被创建? 首先一句简单的NEW语 ...