Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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# 将大数据导出到Excel_C#_Asp.net_Excel_Gridview - Fatal编程技术网

C# 将大数据导出到Excel

C# 将大数据导出到Excel,c#,asp.net,excel,gridview,C#,Asp.net,Excel,Gridview,在我的gridview中,我有30000条记录,当我导出到excel时,它只导出近12000条记录,下面是我要导出到excel的代码 GridView1.AllowPaging = false; DataTable dt = (DataTable)Session["tabledata"]; GridView1.DataSource = dt; GridView1.DataBind(); Response.ClearContent(); Response.Buffer = true; Respon

在我的gridview中,我有30000条记录,当我导出到excel时,它只导出近12000条记录,下面是我要导出到excel的代码

GridView1.AllowPaging = false;
DataTable dt = (DataTable)Session["tabledata"];
GridView1.DataSource = dt;
GridView1.DataBind();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "Customers.xls"));
Response.ContentType = "application/ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);

//Change the Header Row back to white color
GridView1.HeaderRow.Style.Add("background-color", "Red");
//Applying stlye to gridview header cells
for (int i = 0; i < GridView1.HeaderRow.Cells.Count; i++)
{
    GridView1.HeaderRow.Cells[i].Style.Add("background-color", "Red");
}
GridView1.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
GridView1.allowpage=false;
DataTable dt=(DataTable)会话[“tabledata”];
GridView1.DataSource=dt;
GridView1.DataBind();
Response.ClearContent();
Response.Buffer=true;
AddHeader(“内容处置”,string.Format(“附件;文件名={0}”,“Customers.xls”);
Response.ContentType=“应用程序/ms excel”;
StringWriter sw=新的StringWriter();
HtmlTextWriter htw=新的HtmlTextWriter(sw);
//将标题行更改回白色
GridView1.HeaderRow.Style.Add(“背景色”、“红色”);
//将stlye应用于gridview标题单元格
对于(int i=0;i

这里是如何将所有(30k)gridview记录导出到excel的示例代码。

这里是将网格数据保存到excel文件的示例代码

  protected void ExportToExcel(object sender, EventArgs e)
    {
        Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls");
        Response.Charset = "";
        Response.ContentType = "application/vnd.ms-excel";
        using (StringWriter sw = new StringWriter())
        {
            HtmlTextWriter hw = new HtmlTextWriter(sw);

            //To Export all pages
            GridView1.AllowPaging = false;
            this.BindGrid();

            GridView1.HeaderRow.BackColor = Color.White;
            foreach (TableCell cell in GridView1.HeaderRow.Cells)
            {
                cell.BackColor = GridView1.HeaderStyle.BackColor;
            }
            foreach (GridViewRow row in GridView1.Rows)
            {
                row.BackColor = Color.White;
                foreach (TableCell cell in row.Cells)
                {
                    if (row.RowIndex % 2 == 0)
                    {
                        cell.BackColor = GridView1.AlternatingRowStyle.BackColor;
                    }
                    else
                    {
                        cell.BackColor = GridView1.RowStyle.BackColor;
                    }
                    cell.CssClass = "textmode";
                }
            }

            GridView1.RenderControl(hw);

            //style to format numbers to string
            string style = @"<style> .textmode { } </style>";
            Response.Write(style);
            Response.Output.Write(sw.ToString());
            Response.Flush();
            Response.End();
        }
    }
受保护的void ExportToExcel(对象发送方,事件参数e)
{
Response.Clear();
Response.Buffer=true;
AddHeader(“内容处置”、“附件;文件名=GridViewExport.xls”);
响应。Charset=“”;
Response.ContentType=“application/vnd.ms excel”;
使用(StringWriter sw=new StringWriter())
{
HtmlTextWriter hw=新的HtmlTextWriter(sw);
//导出所有页面的步骤
GridView1.AllowPaging=false;
这个.BindGrid();
GridView1.HeaderRow.BackColor=颜色.白色;
foreach(GridView1.HeaderRow.Cells中的TableCell单元格)
{
cell.BackColor=GridView1.HeaderStyle.BackColor;
}
foreach(GridView1.Rows中的GridViewRow行)
{
row.BackColor=Color.White;
foreach(行中的表格单元格。单元格)
{
如果(row.RowIndex%2==0)
{
cell.BackColor=GridView1.AlternatingRowStyle.BackColor;
}
其他的
{
cell.BackColor=GridView1.RowStyle.BackColor;
}
cell.CssClass=“textmode”;
}
}
GridView1.渲染控制(hw);
//将数字格式化为字符串的样式
字符串样式=@“.textmode{}”;
回应。写作(风格);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
}
}

我建议您看看OpenXmlWriter类,它可以将大量数据导出到excel(这可以防止缓存问题)。

要将数据导出到excel,可以使用ClosedXML.Report库()。相信我,这是一个很棒的图书馆,对她来说很容易使用。该库不需要Excel互操作。Report基于模板生成Excel文件,您可以使用任何格式在Excel中创建该模板。例如:

    var template = new XLTemplate(@".\Templates\report.xlsx");

    using (var db = new DbDemos())
    {
        var cust = db.customers.LoadWith(c => c.Orders).First();
        template.AddVariable(cust);
        template.Generate();
    }

    template.SaveAs(outputFile);

您好-seif sammain,当我试图执行您的代码时,我得到了“System.OutOfMemoryException”。错误