gpt4 book ai didi

c# - Excel 下载过程在 ASP.NET 中的大型数据集的情况下死于页面

转载 作者:行者123 更新时间:2023-11-30 12:30:07 24 4
gpt4 key购买 nike

我开发了一个应用程序,我从数据库中获取数据,将其绑定(bind)到 Infragistics 网格,然后使用其导出实用程序下载 excel

当数据集很大(比如 20000 条记录或更多)时,这种方法会出现问题,处理和下载需要很长时间,而且通常会死掉页面和向用户显示空白页面。

是否有更好的方法来处理这个问题并合理改进 excel 下载过程?

代码如下:

    public void LoadExcelPostingData()
{
try
{
query = "Some complex query here with up to 10 columns";
dt.Clear();
dt = new DataTable();
db2.GetDataTable(query, CommandType.Text, ref dt);

grdJurdata.DataSource = dt;
grdJurdata.DataBind();

ExportToExcel();
}
catch (Exception ex)
{
lblresult.Text = "Grd Err : " + ex.Message;
}

}
private void ExportToExcel()
{
try
{
// Infragistics built in excel export utility
UltraWebGridExcelExporter2.Export(grdJurdata);
}
catch (Exception ex)
{ }

}

最佳答案

关于文件下载微软的MSDN提供detailed explanation

  • 获取响应
  • 根据响应,将内容类型设置为“APPLICATION/OCTET-STREAM”(这意味着没有应用程序可以打开该文件)。
  • 将标题设置为“Content-Disposition”、“attachment;filename=\””++ “\”。
  • 将文件内容写入响应。
  • 关闭响应。

还要记住永远不要使用 Ajax 请求来下载文件,因为对于文件传输,它需要完整的回发请求
这是 MSDN 上给出的示例代码

<%
try
{
System.String filename = "myFile.txt";

// set the http content type to "APPLICATION/OCTET-STREAM
Response.ContentType = "APPLICATION/OCTET-STREAM";

// initialize the http content-disposition header to
// indicate a file attachment with the default filename
// "myFile.txt"
System.String disHeader = "Attachment; Filename=\"" + filename +
"\"";
Response.AppendHeader("Content-Disposition", disHeader);

// transfer the file byte-by-byte to the response object
System.IO.FileInfo fileToDownload = new
System.IO.FileInfo("C:\\downloadJSP\\DownloadConv\\myFile.txt");
Response.Flush();
Response.WriteFile(fileToDownload.FullName);}
catch (System.Exception e)
// file IO errors
{
SupportClass.WriteStackTrace(e, Console.Error);
}
%>



我也建议你阅读this good discussion

编辑#1:您的案例的另一种解决方案是创建一个新页面来保存 UltraWebGridExcelExporter,并在您的主页中创建一个 iframe 标记来保存该新页面。让iframe回发。并将您的 Infgraistics 版本升级到最新版本。

关于c# - Excel 下载过程在 ASP.NET 中的大型数据集的情况下死于页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17103160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com