Gridview导出数据到Excel

来源:互联网 发布:乐视电视怎么连接网络 编辑:程序博客网 时间:2024/05/11 03:47

 First:新建一个ExcelTest.aspx的窗体

Second:将如下代码考入你的所建窗体的cs文件中

using System;
using System.Data;
using System.Configuration;
using System.Collections;
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.Collections.Generic;
using System.Data.OleDb;

public partial class ExcelTest : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            GridView1.BorderWidth = Unit.Pixel(2);
            GridView1.BorderColor = System.Drawing.Color.DarkOrange;
            GvBind();
        }
    }
    public static DataTable ExecuteDataTable()
    {
        string oleconstring = ConfigurationManager.ConnectionStrings["oleconstring"].ConnectionString;
        DataTable dt = new DataTable();
        OleDbDataAdapter da = new OleDbDataAdapter();
        OleDbCommand cmd = new OleDbCommand();
        da.SelectCommand = cmd;
        using (OleDbConnection con = new OleDbConnection(oleconstring))
        {
            cmd.Connection = con;
            cmd.CommandText = "select * from [pictures]";
            try
            {
                da.Fill(dt);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }
            finally
            { }
        }
        return dt;
    }
  
    protected void GvBind()
    {
        this.GridView1.DataSource = ExecuteDataTable();
        this.GridView1.DataBind();
    }

    public override void VerifyRenderingInServerForm(Control control)
    { }
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Cells[1].Attributes.Add("style", "vnd.ms-excel.numberformat:@;");
        }
    }
    protected void Button1_Click1(object sender, EventArgs e)
    {
        Response.Clear();
        Response.Buffer = true;
        Response.Charset = "GB2312";
        Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");
        // 如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!!!
        Response.ContentEncoding = System.Text.Encoding.UTF7;
        Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
        System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
        this.GridView1.RenderControl(oHtmlTextWriter);
        Response.Output.Write(oStringWriter.ToString());
        Response.Flush();
        Response.End();
    }
}
Third将如下文件copy 到你的页面aspx文件中

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ExcelTest.aspx.cs" Inherits="ExcelTest" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Style="position: relative">
            <Columns>
                <asp:BoundField DataField="picId" HeaderText="Id" />
                <asp:BoundField DataField="picTitle" HeaderText="Title" />
                <asp:BoundField DataField="picUrl" HeaderText="Path" />
                <asp:BoundField DataField="picInstr" HeaderText="Instructions" />
            </Columns>
        </asp:GridView>
        <asp:Literal ID="Literal1" runat="server"></asp:Literal>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click1" />
    </div>
    </form>
</body>
</html>

Fourth:为你的gridView设置好数据源

原创粉丝点击