【问题标题】:Export Gridview to Excel in ASP.net with EPPlus使用 EPPlus 在 ASP.net 中将 Gridview 导出到 Excel
【发布时间】:2019-10-28 06:41:08
【问题描述】:

我正在尝试将数据从我的 gridview 导出到 Excel 文件。

我已尝试使用 EPPlus 库,但即使我在算法开始时禁用分页,它也只会打印 gridview 的第一页。

这是使用 EPPlus 的代码:

Response.Clear();
Response.Charset = "";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=GridData.xlsx");

cgvReferentiel.AllowPaging = false;    // here I'm disabling paging

if (cgvReferentiel.Rows.Count > 0)
{
    var dtb = new DataTable();

    // Creating table headers
    dtb.Columns.Add("PAYS", typeof(string));
    dtb.Columns.Add("SOCIETE", typeof(string));
    dtb.Columns.Add("SECTION", typeof(string));
    dtb.Columns.Add("MATRICULE", typeof(string));
    dtb.Columns.Add("NOM(S)", typeof(string));
    dtb.Columns.Add("PRENOM(S)", typeof(string));
    dtb.Columns.Add("IDENTIFIANT", typeof(string));
    dtb.Columns.Add("SOURCE", typeof(string));
    dtb.Columns.Add("TYPE", typeof(string));
    dtb.Columns.Add("DATE D'ARCHIVAGE", typeof(string));

    // Adding rows content
    foreach (GridViewRow row in cgvReferentiel.Rows)
    {
        var pays = row.Cells[0].Text;
        var societe = row.Cells[1].Text;
        var section = row.Cells[2].Text;
        var matricule = row.Cells[3].Text;
        var nom = row.Cells[4].Text;
        var prenom = row.Cells[5].Text;
        var identifiant = row.Cells[6].Text;
        var source = row.Cells[7].Text;
        var type = row.Cells[8].Text;
        var date = row.Cells[9].Text;

        dtb.Rows.Add(pays, societe, section, matricule, nom, prenom, identifiant, source, type, date);
    }

    // Writing the excel file
    using (ExcelPackage pck = new ExcelPackage())
    {
        ExcelWorksheet wsDt = pck.Workbook.Worksheets.Add("Historique");
        wsDt.Cells["A1"].LoadFromDataTable(dtb, true, TableStyles.Light20);
        wsDt.Cells.AutoFitColumns();

        Response.BinaryWrite(pck.GetAsByteArray());
    }

    Response.Flush();
    Response.End();
}

这段代码有什么问题?

【问题讨论】:

  • 开始使用专门的库来创建 Excel 文件,例如 EPPlus。您现在所做的只是创建一个扩展名为 .xls 的 HTML 页面。
  • @VDWWD 我已经尝试过了,但我面临另一个问题。帮忙?

标签: c# asp.net excel gridview


【解决方案1】:

我找到了问题所在。我需要在禁用分页后绑定gridview行:

cgvReferentiel.DataBind();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-20
    • 2012-03-23
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多