我有一个问题,我的视图冻结等待我的exportexcel函数结果这个函数是void类型的,在我的动作视图中用参数调用这个函数的功能问题是有时创建的excel文件太大超过500mb,这个文件generatin可能需要一段时间?希望成为我的动作视图不要冻结,用户可以触发另一个exportexcel或可以是f±lter或搜索我的ui,以便可以对th±s±ts my demo project link执行什么操作
https://github.com/nto4/AsyncExcelExport
客户端断开连接,请尝试另一个th±nk类型的筛选数据或搜索新数据或导出不同的excel丢失范围,此代码在respose.addheader(“……”)上失败
对于单独运行th±s exportexcel函数和下载没有任何efect的客户端,我的视图thx帮助你是最好的!
这是我的职责
public void ExportToExcel(DateTime? start, DateTime? end)
{
try
{//Downloads tablosuna indirmenin kaydı
Download m = new Download();
DateTime startdate = start ?? new DateTime(2000, 10, 10, 1, 1, 1, 1); ;
DateTime enddate = end ?? DateTime.Now;
DateTime now = DateTime.Now;
m.IsExist = false;
m.CreateDate = now;
m.EndDate = now;
m.StartDate = now;
string name = "Report";
string date = now.ToString("F");
date = date.Replace(" ", "_");
date = date.Replace(",", "_");
string sonu = ".xls";
date += sonu;
name += date;
m.GuidName = name;
db.Downloads.Add(m);
db.SaveChanges();
//Creating Excel
var gv = new GridView();
var temp = db.Transections.ToList();
foreach (var item in temp.ToList())
{
if (item.Date < startdate || item.Date > enddate)
{
temp.Remove(item);
}
}
gv.DataSource = temp;
gv.DataBind();
Response.ClearContent();
Response.Buffer = true;
string attachment = "attachment; filename=";
attachment = attachment + name;
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "application/ms-excel";
Response.Charset = "";
StringWriter objStringWriter = new StringWriter();
HtmlTextWriter objHtmlTextWriter = new HtmlTextWriter(objStringWriter);
gv.RenderControl(objHtmlTextWriter);
Response.Output.Write(objStringWriter.ToString());
Response.Flush();
Response.End();
//IsExist set True
var bull = db.Downloads.SingleOrDefault(b => b.GuidName == name);
if (bull != null)
{
bull.IsExist = true;
db.SaveChanges();
}
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
}
public ActionResult Listele(DateTime? dates, DateTime? datee, string submit)
{
var model = db.Transections.ToList();
DateTime startdate = dates ?? new DateTime(2000, 10, 10, 1, 1, 1, 1);
DateTime enddate = datee ?? DateTime.Now; ;
foreach (var item in model.ToList())
{
if (item.Date < startdate || item.Date > enddate)
{
model.Remove(item);
}
}
if (submit == "report")
{
ExportToExcel(dates, datee);
//ExportToExcelasync(dates, datee);
}
return View(model);
}