使用启用分页的GridView将所有数据导出到Excel.在asp.net中使用c#

本文关键字:Excel net asp 数据 分页 启用 GridView | 更新日期: 2023-09-27 18:00:04

我正在尝试将数据导出到Excel。我有启用了分页的GridView。当我使用HtmlTextWriter下载数据时,它只会下载GridView中的可见记录。我们可以在一个excel文件中下载所有记录吗?而且下载的数据应该和GridView中的排序状态相同吗?

客户端源代码

<asp:GridView ID="gvDetailFleet" runat="server" DataSourceID="SqlDataSource2" 
        AllowPaging="false" AllowSorting="True"  AutoGenerateColumns="true"
        DataKeyNames="OracleId" CellPadding="4" ForeColor="#333333" 
        GridLines="None"    >
        <RowStyle BackColor="#EFF3FB" />
        <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
        <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
        <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
        <EditRowStyle BackColor="#2461BF" />
        <AlternatingRowStyle BackColor="White" />
</asp:GridView>

这里是服务器端

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 System.Data.SqlClient;
using System.IO;
public partial class FleetReportWithoutVehicle : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            btnFleetReportWithoutVehicle.Visible = false;
        }
    }
    protected void btnSearch_Click(object sender, EventArgs e)
    {
        btnFleetReportWithoutVehicle.Visible = true;
    }
    protected void btnExportSalary_Click(object sender, EventArgs e)
    {
        Response.ClearContent();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "AttendanceFollowUpReport.xls"));
        Response.ContentType = "application/ms-excel";
        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        gvDetailFleet.AllowPaging = false;
        gvDetailFleet.HeaderRow.Style.Add("background-color", "");
        for (int i = 0; i < gvDetailFleet.HeaderRow.Cells.Count; i++)
        {
            gvDetailFleet.HeaderRow.Cells[i].Style.Add("background-color", "");
        }
        gvDetailFleet.RenderControl(htw);
        Response.Write(sw.ToString());
        Response.Flush();
        Response.End();
    }
    public override void VerifyRenderingInServerForm(Control control)
    {
    }
}

使用启用分页的GridView将所有数据导出到Excel.在asp.net中使用c#

您可以尝试这样做

    GridView gv = new GridView();
      gv.DataSource = sourceList; //Your datasource from database
                gv.DataBind();
                Response.ClearContent();
                Response.Buffer = true;
                Response.AddHeader("content-disposition", "attachment; filename=Preferred_Funds-" + DateTime.Now.ToShortDateString() + ".xls");
                Response.ContentType = "application/ms-excel";
                Response.Charset = "";
                StringWriter sw = new StringWriter();
                HtmlTextWriter htw = new HtmlTextWriter(sw);
                gv.RenderControl(htw);
                Response.Output.Write(sw.ToString());
                Response.Flush();
                Response.End();

//在按钮中尝试此代码

    Response.Clear();
    Response.AddHeader("content-disposition", "attachment;filename=ExportData1.xls");
    Response.Charset = "";
    Response.ContentType = "application/vnd.xls";
    StringWriter StringWriter = new System.IO.StringWriter();
    HtmlTextWriter HtmlTextWriter = new HtmlTextWriter(StringWriter);
    //batigol
    GridView1.AllowPaging = false;
    GridView1.DataSource = Session["uu"];
    GridView1.DataBind();
    //
    GridView1.RenderControl(HtmlTextWriter);
    Response.Write(StringWriter.ToString());
    Response.End();