GridView导出Excel的超好样例「建议收藏」

GridView导出Excel的超好样例「建议收藏」事实上网上有非常多关于Excel的样例,可是不是非常好,他们的代码没有非常全,读的起来还非常晦涩。经过这几天的摸索,最终能够完毕我想要导出报表Excel的效果了。以下是我的效果图。一.前台的页面图Gr

大家好,又见面了,我是你们的朋友全栈君。

 

         事实上网上有非常多关于Excel的样例,可是不是非常好,他们的代码没有非常全,读的起来还非常晦涩。经过这几天的摸索,最终能够完毕我想要导出报表Excel的效果了。以下是我的效果图。

一.前台的页面图

GridView的第一页的内容

GridView导出Excel的超好样例「建议收藏」

GridView第二页的内容:

GridView导出Excel的超好样例「建议收藏」

大家可能遇到这样的情况,就是这个时候导出Excel的时候,打开Excel的时候发现GridView的第二页的内容却没有导出到Excel表里面。事实上解决这样的情况,非常easy,仅仅要在导出之前,把Gridview的设置分页设置为Flase即可了。

以下是我导出Gridview里面的所有内容,打开Excel表例如以下:

GridView导出Excel的超好样例「建议收藏」

 

这就能够导出所有的GridView里面的内容了,包含了GridView的第一页和第二页的内容。

 

二、实现的代码

1.前台的代码:

 <div style=” margin:20px;”>
        <asp:GridView ID=”gvRecord” runat=”server” AllowPaging=”True” CellPadding=”3″ 
            AutoGenerateColumns=”False”  BorderColor=”White”
            BorderStyle=”Ridge” BorderWidth=”2px” BackColor=”White” CellSpacing=”1″
            GridLines=”None” onprerender=”gvRecord_PreRender”
            onpageindexchanged=”gvRecord_PageIndexChanged”
            onpageindexchanging=”gvRecord_PageIndexChanging” >
            <PagerSettings FirstPageText=”Home Page” LastPageText=”Last Page”
                NextPageText=”Next” PreviousPageText=”Previous” />
            <RowStyle  ForeColor=”Black” BackColor=”#E5F1FF” HorizontalAlign=”Center” />
            <Columns>
                <asp:TemplateField HeaderText=”Extension”>
    
                    <ItemTemplate>
                        <asp:Label ID=”Label1″ runat=”server” Text='<%# Bind(“Extn”) %>’></asp:Label>
                    </ItemTemplate>
                    <ItemStyle Width=”200px” />
                </asp:TemplateField>
                <asp:TemplateField HeaderText=”Wake up time”>
            
                    <ItemTemplate>
                        <asp:Label ID=”Label2″ runat=”server” Text='<%# Bind(“CallTime”) %>’></asp:Label>
                    </ItemTemplate>
                    <ItemStyle Width=”300px” />
                </asp:TemplateField>
                <asp:TemplateField HeaderText=”Status”>
 
                    <ItemTemplate>
                        <asp:Label ID=”Label3″ runat=”server” Text='<%# getResult(Eval(“Status”).ToString()) %>’></asp:Label>
                    </ItemTemplate>
                    <ItemStyle Width=”250px” />
                </asp:TemplateField>
                <asp:TemplateField HeaderText=”Call number”>
      
                    <ItemTemplate>
                        <asp:Label ID=”Label4″ runat=”server” Text='<%# Bind(“callcount”) %>’></asp:Label>
                    </ItemTemplate>
                    <ItemStyle Width=”150px” />
                </asp:TemplateField>
            </Columns>
            <FooterStyle BackColor=”#C6C3C6″ ForeColor=”Black” />
            <PagerStyle BackColor=”#C6C3C6″ ForeColor=”Black” HorizontalAlign=”Right” />
            <SelectedRowStyle BackColor=”#9471DE” Font-Bold=”True” ForeColor=”White” />
            <HeaderStyle BackColor=”#C9E2FF” Font-Bold=”True” ForeColor=”#000000″ />
        </asp:GridView>
       
        <p>
            <asp:Button ID=”btnExcel” CssClass=”button”  runat=”server” Text=”Statements

                onclick=”btnExcel_Click” /></p>
    </div>

 

2.后台代码例如以下:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Model;
using DAL;
using System.Collections.Generic;
using System.IO;

public partial class _3C_CallManager_CallRecord : System.Web.UI.Page
{
    int selectFlag = 0;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            bind();
        }
    }

     

    public string getResult(string str)
    {
        if (str == “0”)
            return “Haven’t called”;
        if (str == “1”)
            return “check-out”;
        if (str == “2”)
            return “success”;
        if (str == “3”)
            return “fail”;
        if (str == “4”)
            return “dealing”;
        if (str == “5”)
            return “Artificial wake”;
        else
            return “unkown”;

    }
    public void bind() {
        selectFlag = 0;
        gvRecord.DataSource = VgCallService.GetInfo();
        gvRecord.DataBind();
    }
    protected void btnExcel_Click(object sender, EventArgs e)
    {
        DateTime dt = System.DateTime.Now;
        string str = dt.ToString(“yyyyMMddhhmmss”);
        str = str + “.xls”;

        gvRecord.AllowPaging = false;
        if (selectFlag == 0)
            bind();
        if (selectFlag == 1)
            selectBind();

        GridViewToExcel(gvRecord, “application/ms-excel”, str);

       // Export(gvRecord, “application/ms-excel”, str);

  

    }

    /// <summary>
    /// 将网格数据导出到Excel
    /// </summary>
    /// <param name=”ctrl”>网格名称(如GridView1)</param>
    /// <param name=”FileType”>要导出的文件类型(Excel:application/ms-excel)</param>
    /// <param name=”FileName”>要保存的文件名称</param>
    public static void GridViewToExcel(Control ctrl, string FileType, string FileName)
    {
        HttpContext.Current.Response.Charset = “GB2312”;
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;//注意编码
        HttpContext.Current.Response.AppendHeader(“Content-Disposition”,
            “attachment;filename=” + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8).ToString());
        HttpContext.Current.Response.ContentType = FileType;//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword
        ctrl.Page.EnableViewState = false;
        StringWriter tw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(tw);
        ctrl.RenderControl(hw);
        HttpContext.Current.Response.Write(tw.ToString());
        HttpContext.Current.Response.End();
    }
    /// <summary>
    /// ReLoad this VerifyRenderingInServerForm is neccessary
    /// </summary>
    /// <param name=”control”></param>

    public override void VerifyRenderingInServerForm(Control control)
    {

    }

    protected void gvRecord_PreRender(object sender, EventArgs e)
    {
        if(selectFlag==0)
            bind();
      }
    protected void gvRecord_PageIndexChanged(object sender, EventArgs e)
    {

    }
    protected void gvRecord_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        this.gvRecord.PageIndex = e.NewPageIndex;

        bind();
    }
}

 

 

注意问题说明:

1)前台页面<%@ Page Language=”C#” EnableEventValidation=”false”  AutoEventWireup=”true” CodeFile=”CallRecord.aspx.cs” Inherits=”_3C_CallManager_CallRecord” %>注意加入EnableEventValidation=”false”,要不然会报错的。

2)GridView的绑定数据库的代码

     gvRecord.DataSource = VgCallService.GetInfo();//VgCallService.GetInfo()是获取数据库的集合,我是封装好的,依据你们的获取的集合做不同的调整。
        gvRecord.DataBind();
3)点击GridView下一页的关键代码,在PageIndexChanging事件里面

  this.gvRecord.PageIndex = e.NewPageIndex;  //注意这个不能少。

        bind();

4)在导出Excel的button事件里面记得先gvRecord.AllowPaging = false;把GridView的分页取消之后,再调用GridViewToExcel方法。

5)以下的不可少。

    public override void VerifyRenderingInServerForm(Control control)
    {

    }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154869.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 7个最优秀的手机游戏引擎

    7个最优秀的手机游戏引擎随着智能手机成为主要的游戏平台,移动游戏引擎变得越来越流行。下面将介绍7个最优秀的手机游戏引擎。1.CoronaSDK游戏开发引擎这是一款实用Lua语言作为开发语言的游戏引擎,对我来说比起的其他的游戏引擎要好学一点。而且,Lua语言现在很有游戏开发都有相关的支持。Coronasdk官方网址:https://coronalabs.com/Lua学习网址,最好从菜鸟教程开始http://www.runoob.com/lua/lua-tutorial.htmlCoronaSDK开发欢迎W

    2022年6月6日
    60
  • 前端面试——W3C标准及规范「建议收藏」

    前端面试——W3C标准及规范「建议收藏」作为前端工程师对W3C标准和规范不是很陌生。很多招聘要求中经常提到深入了解W3C标准及规范。那下面就总结一下W3C标准及规范:概念:W3C标准  中文名:万维网联盟,外文名:WorldWideWebConsortium      万维网联盟标准不是某一个标准,而是一些列标准的集合。网页主要有三部分组成:结构(Structure)、表现(Presentation)、行为(B…

    2025年12月12日
    4
  • ORA-00988: missing or invalid password(s)

    ORA-00988: missing or invalid password(s)创建账号或修改账号密码时有可能会遇到ORA-00988:missingorinvalidpassword(s),那么什么情况下会遇到这种错误呢?一般是因为密码的设置不符合命名规范:1:密码

    2022年7月1日
    35
  • 2020年前端面试题及答案_结构化面试题库及答案

    2020年前端面试题及答案_结构化面试题库及答案1、javascript基本数据类型?string、number、null、underfined、booleanobject是所有对象的父对象。2、浅谈javascript中变量和函数声明的提升?变量和函数声明的提升会被提升到最顶部去执行;函数的提升高于变量的提升;如果在函数内部用var声明了与外部相同的变量,则不向下寻找;匿名函数不会被提升;不同块中互不影响。3、什么是闭包?闭包有什么特性?闭包就是能够读取其他函数内部变量的函数。闭包的特性:函数内部可以嵌套函数;内部函数可以直接

    2022年8月27日
    8
  • monit 监控_沃伦尚监控手机客户端

    monit 监控_沃伦尚监控手机客户端urlhttp://mmonit.com/monit/documentation/monit.htmlVersion5.12NAMESYNOPSISDESCRIPTIONWHATTOMONITOR?GENERALOPERATIONOptionsArguments…

    2025年6月6日
    4
  • 滴滴派单规则分析

    滴滴派单规则分析滴滴派单规则1批量匹配(全局最优)派单策略主要的原则是:站在全局视角,尽量去满足尽可能多的出行需求,保证乘客的每一个叫车需求都可以更快更确定的被满足,并同时尽力去提升每一个司机的接单效率,让总的接驾距离和时间最短。这个算法几乎是所有类似派单系统为了解决这个问题的最基础模型,在Uber叫做BatchingMatching,滴滴叫做“全局最优”或者“延迟集中分单”。2基于供需预测的分单(大数据预测)利用对未来的预测:如果我们预测出未来一个区域更有可能有更多的订单/司机,那么

    2022年6月2日
    146

发表回复

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

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