Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从gridview导出到Excel_C#_Asp.net_Gridview_Export To Excel - Fatal编程技术网

C# 从gridview导出到Excel

C# 从gridview导出到Excel,c#,asp.net,gridview,export-to-excel,C#,Asp.net,Gridview,Export To Excel,我有导出到Excel的代码。在我的gridview中,我将分页设置为显示pagecount中的记录数 但是在我导出到Excel的过程中,它并没有给我完整的记录,而是给我显示了相同的页面,有六条记录 我的代码: string attachment = "attachment; filename=Contacts.xls"; Response.ClearContent(); Response.AddHeader("content-disposition", attachment); Response

我有导出到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等格式显示给我


如何从这里以数字形式传递formatcells?

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

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

下面是执行此操作的示例代码。有关更多信息,请参阅

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();
                }
            }
        }
    }
}

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


我也赞同奥索尔的评论;而不是导出网格中的内容;导出数据源。

您好,谢谢您的回复。我在gridview中的数字为+9199。。。。但在导出后,它以9.99的格式显示给我。。。。如何从这里以数字形式传递formatcells..问题是关于分页问题。我看不出你的回答中有什么解释可以解释核心问题的相关性。换句话说,这段代码只是导出xls的基本方法。