【问题标题】:Export to Excel from gridview从 gridview 导出到 Excel
【发布时间】:2010-06-24 11:44:46
【问题描述】:

我有导出到 Excel 的代码。在我的 gridview 中,我将分页设置为显示 pagecount 中的记录数。

但在我导出到 Excel 时,它并没有给我完整的记录,而是向我显示了包含六条记录的相同分页。

我的代码:

string attachment = "attachment; filename=Contacts.xls";
Response.ClearContent();
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "application/ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);

// Create a form to contain the grid
HtmlForm frm = new HtmlForm();

GrdDynamicControls.AllowPaging = false;
GrdDynamicControls.Parent.Controls.Add(frm);

frm.Attributes["runat"] = "server";
frm.Controls.Add(GrdDynamicControls);
frm.RenderControl(htw);

//GridView1.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();

如何更改或禁用分页以从我的 gridview 中获取所有记录?

我在 gridview 中有数字为 +9199 等,但在导出后它以 9.99 等格式显示给我。

如何从这里以数字形式传递格式单元?

【问题讨论】:

  • 您好,感谢您的回复。我在gridview中有数字为+9199 ....但在导出后它以9.99的格式显示给我......如何从这里以数字形式传递格式单元......

标签: c# asp.net gridview export-to-excel


【解决方案1】:

我不熟悉ASP.NET,但我相信您将一些数据源(dataTable 或 List)绑定到您的网格。导出数据源而不是 dataGrid。

【讨论】:

    【解决方案2】:

    您可以将 gridview 的数据源(例如,数据集)导出到 Excel。

    这是执行此操作的示例代码。您可以参考Howto: Export a dataset to Excel (C# / ASP.NET)了解更多信息。

    using System;
    using System.Data;
    using System.IO;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace Whatever
    {
        ///
        /// This class provides a method to write a dataset to the HttpResponse as
        /// an Excel file.
        ///
        public class ExcelExport
        {
            public static void ExportDataSetToExcel(DataSet ds, string filename)
            {
                HttpResponse response = HttpContext.Current.Response;
    
                // First let's clean up the response.object.
                response.Clear();
                response.Charset = "";
    
                // Set the response mime type for Excel.
                response.ContentType = "application/vnd.ms-excel";
                response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
    
                // Create a string writer.
                using (StringWriter sw = new StringWriter())
                {
                    using (HtmlTextWriter htw = new HtmlTextWriter(sw))
                    {
                        // Instantiate a datagrid
                        DataGrid dg = new DataGrid();
                        dg.DataSource = ds.Tables[0];
                        dg.DataBind();
                        dg.RenderControl(htw);
                        response.Write(sw.ToString());
                        response.End();
                    }
                }
            }
        }
    }
    

    【讨论】:

    • 问题是关于分页问题。我在您的回答中没有看到解释核心点相关性的解释。也就是说,这段代码只是导出xls的一个基本方法。
    【解决方案3】:

    我相信您需要在禁用分页后重新绑定网格才能获取所有记录。

    我也赞同 Orsol 的评论;在哪里而不是导出网格中的内容;导出数据源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多