javascript - 下载 Excel 文件后,浏览器未结束加载
问题描述
我正在使用网格视图将数据导出到 Excel。
所有数据都被导出到 Excel 中。
但是导出到 Excel 后,excelsheet 直接打开到 Excel 中,在浏览器中我得到“请稍候...”符号,即使 Excel 已经导出。
这是我将数据导出到 Excel 的代码:
var gv = new GridView();
gv.DataSource = Export_List;
gv.DataBind();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=export.xls");
Response.ContentType = "application/ms-excel";
Response.Charset = "";
StringWriter stringWriter = new StringWriter();
HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter);
gv.RenderControl(htmlTextWriter);
Response.Output.Write(stringWriter.ToString());
Response.End();
导出到 Excel 后,excelsheet 直接在 Excel 和浏览器中打开,即使 Excel 已经导出,我也会收到“请稍候...”符号。
这是 _Layout.cshtml 中加载符号的代码
<body onbeforeunload="LoadSymbol()" onload="UnLoadSymbol()">
<div id="pgLoad" style="margin: 0px; padding: 0px; position: fixed; right: 0px;
top: 0px; width: 100%; height: 100%; background-color: #666666; z-index: 999999;
opacity: .6; filter: alpha(opacity=70);display:none">
<p style="position: absolute; top: 40%; left: 40%; color: White;">
Please wait...<br>
<i class="fa fa-circle-o-notch fa-spin fa-3x fa-fw"></i>
</p>
</div>
some code
<script language="javascript">
$("form").submit(function () { $("#pgLoad").show(); });
document.onreadystatechange = function () {
var iscomplete= document.readyState
if (iscomplete== 'complete') {
$("#pgLoad").hide();
}
}
function LoadSymbol() {
$("#pgLoad").show();
}
function UnLoadSymbol() {
$("#pgLoad").hide();
}
</script>
</body>
这是导出按钮
@using (Html.BeginForm())
{
some code
<button type="submit" class="btn btn-primary" name="ExcelButton" value="Download as Excel" id="ExcelButton" > Download as Excel </button>
}
如果 excel 已经导出,我怎样才能摆脱这个“请稍候...”符号?
为什么Excel表格下载后直接打开Excel,有什么办法可以显示下载的Excel进入Chrome的下载栏?
解决方案
您的 js 脚本不知道导出是否结束,您需要从 gridview 捕获响应并传递给 js。
推荐阅读
- java - 如何使用缓冲流 I/O Java 从文本文件中搜索关键字列表
- ios - Swift-如何将单元格项目的数量划分为部分?
- php - 如何在 Laravel Livewire 中传递隐藏的表单输入?
- taleo - 如何在候选实体中检索 UDF 字段的特定值
- node.js - 将 azure blob 流下载到 zip nodejs
- java - 对于这种方法,正则表达式如何捕获返回的第一个字母 str.replaceAll("(\\w)(\\w*)", "$2$1a?
- javascript - 警报 Ajax 变量返回 - 未定义城市
- html - @font-face 导入字体需要很长时间
- python - 尝试使用多个空列 (NaN) 取消堆叠数据帧
- javascript - 使用回车键移动到新行