JavaScript EXCEl 导出问题

Gemini_大静静 2017-08-20 10:53:01
我使用别人的方法实现excel 导出问题,但是点击导出的时候出现两个弹框,一个是数据内容弹框,一个是excel存储选择的弹框,请教大神,如何把数据内容的弹框隐藏掉,
问题图片

相关的js代码:

function Save_Excel(e, c) {//导出Excel文件
var data = $(e).datagrid('getExcelXml', { title: 'datagrid import to excel', hidde: c,hidden:true }); var curr_time = new Date();
var strDate = curr_time.getFullYear() + "-";
strDate += curr_time.getMonth() + 1 + "-";
strDate += curr_time.getDate() + "-";
strDate += curr_time.getHours() + "-";
strDate += curr_time.getMinutes() + "-";
strDate += curr_time.getSeconds();

//问题主要是这个地方
var screen = window.screen, fSaveWindow = window.open('', '_blank', 'width=' + Math.round(screen.width * 0.5) + ',height=' + Math.round(screen.height * 0.5) + ',left=' + Math.round(screen.width * 0.05));
fSaveWindow.document.write(data);
if ((navigator.userAgent.indexOf('MSIE') >= 0)
&& (navigator.userAgent.indexOf('Opera') < 0)
|| (!!window.ActiveXObject || "ActiveXObject" in window)
|| (navigator.userAgent.indexOf('Edge') >= 0))//包括Microsoft IE和Microsoft Edge
{
fSaveWindow.document.execCommand("SaveAs", true, strDate + ".xls");
} //Firefox浏览器的支持
else if (navigator.userAgent.indexOf('Firefox') >= 0) {
var aLink = document.createElement('a');
var blob = new Blob([data]);
var evt = document.createEvent("HTMLEvents");
evt.initEvent("click", true, true);
aLink.download = strDate + ".xls";
aLink.href = URL.createObjectURL(blob);
aLink.dispatchEvent(evt);
document.body.appendChild(aLink);
aLink.click();
}
//其他如Chrome和360浏览器的支持
else {
var aLink = fSaveWindow.document.createElement('a');
var blob = new Blob([data]);
var evt = fSaveWindow.document.createEvent("HTMLEvents");
evt.initEvent("click", false, false);
aLink.download = strDate + ".xls";
aLink.href = URL.createObjectURL(blob);
aLink.dispatchEvent(evt);
}

fSaveWindow.close();
}

...全文
229 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cheery_an 2017-08-21
  • 打赏
  • 举报
回复
如果不是ie,完全可以不弹出对话框,把 fSaveWindow.document.createElement('a') 这代码加入到数据表所在的页面即可。 如果是ie,试试:

               var frame = $('<iframe id="test" name="test" width="0" height="0"></iframe>');
                $("body").append(frame);
                var fbody = frame[0].contentWindow;
                fbody.document.open("text/html", "replace");
                fbody.document.write(data);
                fbody.document.close();
                fbody.focus();
                //fbody.print();
                fbody.document.execCommand("SaveAs", true, strDate + ".xls");
                frame.remove();
hongmei85 2017-08-21
  • 打赏
  • 举报
回复
这函数原理就是把数据写到弹窗里面,再运行弹窗的“另存”命令

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧