【问题标题】:Exporting 25,000+ records to excel from database via HTTP通过 HTTP 将 25,000 多条记录从数据库导出到 Excel
【发布时间】:2016-08-05 13:26:48
【问题描述】:

知道如何更快地从数据库中下载 excel 文件吗?

它应该在按钮点击上。我尝试使用以下代码:

SqlConnection connSql = new SqlConnection(Generic);
DataSet ds = new DataSet();
SqlCommand cmdSql = new SqlCommand();
cmdSql.Connection = connSql;
cmdSql.CommandType = System.Data.CommandType.StoredProcedure;


cmdSql.CommandText = "sp_GetDetails";

cmdSql.Parameters.Add(new SqlParameter("@pageIndex", 0));
cmdSql.Parameters.Add(new SqlParameter("@pageSize",rowcount));
cmdSql.Parameters.Add(new SqlParameter("@administratordid",     adminid));
connSql.Open();
SqlDataAdapter da = new SqlDataAdapter(cmdSql);
da.Fill(ds);

gvDetails.AllowCustomPaging = false;
gvDetails.AllowPaging = false;
gvDetails.DataSource = ds;
gvDetails.DataBind();
connSql.Close();

Response.ClearContent();
Response.Buffer = true;
Response.ContentEncoding = System.Text.Encoding.Default; 
Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", fileName));

Response.ContentType = contentType;
    HtmlTextWriter objTW = new HtmlTextWriter(objSW);
gvDetails.RenderControl(objTW);
Response.Write(style); 
Response.Write(objSW);
Response.End();

下载整个文件大约需要 10 分钟。我的数据库中的行数是 25,000。

请为此建议一种更快的方法。我一直在尝试不同的代码,但还没有工作。

【问题讨论】:

  • 在不进行导出的情况下运行查询是否也需要 10 分钟?如果是这样,问题出在存储过程中。其次,看起来您正在尝试同时做两件事(导出和数据绑定到网格视图?)

标签: c# sql asp.net excel


【解决方案1】:

您可以使用真正的 excel 文件而不是将表格呈现为用户下载的 HTML 并尝试显示,而可以使用 EPPLus 生成它。

代码很简单,还有一个方法:LoadFromDataTable:

try {
    var pck = new OfficeOpenXml.ExcelPackage();
    var ws = pck.Workbook.Worksheets.Add("Sheet-Name");
    ws.Cells["A1"].LoadFromDataTable(ds.Tables[0], true, TableStyles.Light18);
    Response.Clear();
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", fileName));
    Response.BinaryWrite(pck.GetAsByteArray());
} catch (Exception ex) {
    //log error
}
Response.End();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2021-09-02
    • 2017-08-13
    相关资源
    最近更新 更多