IE浏览器下载excel数据量较大时第一次下载失败
发布日期:2021-11-09 22:50:42 浏览次数:33 分类:技术文章

本文共 1102 字,大约阅读时间需要 3 分钟。

最近碰到一个很奇怪的问题,就是IE下载excel在数据量超过300K左右时,第一次下载会失败。我后台用的下载插件是Apose,感觉这个问题如果用NPOI的话导出应该就没什么问题,但是由于项目时间问题,只能寻求其他解决方案。有两种解决方案:

1,         string URL = Request.Url.Host.ToString();

            workbook.Save(reportName, FileFormatType.Excel2007Xlsx, SaveType.OpenInExcel, System.Web.HttpContext.Current.Response, Encoding.UTF8);
            workbook.Save(Server.MapPath(@"~\Temp") + "\\" + reportName);
            Response.Redirect("http://localhost:47568/Temp" + "/" + reportName);
            Response.Write("<script>window.open();</script>");
            Response.Redirect(URL);

这种方法是先把数据库中的表文件下载到服务器端,然后再下载到本地,但是这种方法会有一些问题,就是当两个人同时下载的话就会出现文件覆盖的情况。

2,            System.IO.MemoryStream ms = workbook.SaveToStream(); 生成数据流 

            byte[] bt = ms.ToArray();
            string reportName = "Speaker Information Detail" + DateTime.Now.ToString("yyyy-MM-dd-HHmmss") + ".xls";//客户端保存的文件名 
            以字符流的形式下载文件  
            Response.ContentType = "application/vnd.ms-excel";
            通知浏览器下载文件而不是打开
            Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(reportName, System.Text.Encoding.UTF8));
            Response.BinaryWrite(bt);
            Response.Flush();
            Response.End();

这种方法使用.net自身所具备的一些机制,可以较好的解决第一种方法中出现的问题,并且不会出现下载失败的问题。

转载地址:https://blog.csdn.net/dashuaiwang1/article/details/51953210 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:LinQ的一些基础语法
下一篇:外网无法访问发布的网站

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月16日 04时42分00秒