var idTmr;
function getExplorer() {
var explorer = window.navigator.userAgent ;
//ie
if (explorer.indexOf("MSIE") >= 0) {
return 'ie';
} else if(window.ActiveXObject || "ActiveXObject" in window){
return 'ie11';
}
//firefox
else if (explorer.indexOf("Firefox") >= 0) {
return 'Firefox';
}
//Chrome
else if(explorer.indexOf("Chrome") >= 0){
return 'Chrome';
}
//Opera
else if(explorer.indexOf("Opera") >= 0){
return 'Opera';
}
//Safari
else if(explorer.indexOf("Safari") >= 0){
return 'Safari';
}
}
function exportExcel(tableid) {
if(getExplorer()=='ie'){
try{
var curTbl = document.getElementById(tableid);
//创建AX对象excel
var oXL = new ActiveXObject("Excel.Application");
//获取workbook对象
var oWB = oXL.Workbooks.Add();
//获取在workbook中读取第一个sheet
var xlsheet = oWB.Worksheets(1);
//创建TextRange
var sel = document.body.createTextRange();
//把表格中的内容移到TextRange中
sel.moveToElementText(curTbl);
//选中数据
sel.select();
//模拟复制
sel.execCommand("Copy");
//模拟粘贴
xlsheet.Paste();
//打开 excel界面
oXL.Visible = true;
var fname = oXL.Application.GetSaveAsFilename("Excel", "Excel Spreadsheets (*.xls)");
} catch (e) {
dialogAlert("提示: 须允许ActiveX控件运行才能导出Excel文件!\n\n或<br>如果您确信您的电脑中已经安装了Excel,"+"那么请调整IE的安全级别。\n\n具体操作:\n\n"+"工具 → Internet选项 → 安全 → 自定义级别 → 对没有标记为安全的ActiveX进行初始化和脚本运行 → 启用",
'',function(){
var form=document.forms[0];
form.action=location.href+'?timestamp=' + new Date().getTime();
form.submit();
console.log(location.href);
});
return false;
} finally {
oWB.SaveAs(fname);
oWB.Close(savechanges = true);
oXL.Quit();
idTmr = window.setInterval("Cleanup();", 1);
} }else if(getExplorer()=='ie11'){
try {
var doc=document.getElementById(tableid);
//创建excel类型的Application
var exl= new ActiveXObject("Excel.Application");
//不显示界面
exl.visible=false;
var wbook=exl.Workbooks.Add();
var sheet=wbook.Worksheets(1);
//创建TextRange
var sel = document.body.createTextRange();
sel.moveToElementText(doc);
//选中数据
// sel.select();
//模拟复制
sel.execCommand("Copy");
//模拟粘贴
sheet.Paste();
//打开 excel界面
exl.Visible = true;
var fname = exl.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls");
} catch (e) {
dialogAlert("提示: 须允许ActiveX控件运行才能导出Excel文件!\n\n或<br>如果您确信您的电脑中已经安装了Excel,"+"那么请调整IE的安全级别。\n\n具体操作:\n\n"+"工具 → Internet选项 → 安全 → 自定义级别 → 对没有标记为安全的ActiveX进行初始化和脚本运行 → 启用",
'',function(){
var form=document.forms[0];
form.action=location.href+'?timestamp=' + new Date().getTime();
form.submit();
console.log(location.href);
});
return false;
}
wbook.SaveAs(fname);
wbook.Close(false);
exl.Quit();
idTmr = window.setInterval("Cleanup()", 1);
}else
{
tableToExcel(tableid)
} }
function Cleanup() {
window.clearInterval(idTmr);
CollectGarbage();
}
var tableToExcel = (function() {
var uri = 'data:application/vnd.ms-excel;base64,',
template = '<html><head><meta charset="UTF-8"></head><body><table>{table}</table></body></html>',
base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) },
format = function(s, c) {
return s.replace(/{(\w+)}/g,
function(m, p) { return c[p]; }) }
return function(table, name) {
if (!table.nodeType) table = document.getElementById(table)
var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
window.location.href = uri + base64(format(template, ctx))
}
})()

为了弄明白,自己又写了一遍,看起来很简单了!!

最新文章

  1. 特征检测之HOG
  2. iOS Device Specifications Grid
  3. oracle从零开始学习笔记 三
  4. 为OpenEdx中lms注册模块扩展字段
  5. 在 Windows 下部署 Vagrant
  6. Intent意图
  7. bootstrap-5
  8. JDBC连接SQL Server2008
  9. wpf 客户端【JDAgent桌面助手】开发详解(四) popup控件的win8.0的bug
  10. IntelliJ IDEA 12.0
  11. hdu2795 线段树
  12. java中final关键字
  13. [转载]AFX_MANAGE_STATE关于资源切换
  14. SDN学习之OpenFlow协议分析
  15. java并发之线程同步(synchronized和锁机制)
  16. Netflix分享构建Microservices的经验
  17. python魔法方法:__getattr__,__setattr__,__getattribute__
  18. spring cloud服务发现注解之@EnableDiscoveryClient与@EnableEurekaClient区别
  19. Java应用集群下的定时任务处理方案(mysql)
  20. locaton.href传参数

热门文章

  1. 825. Friends Of Appropriate Ages有效的好友请求的数量
  2. 无法查找或打开 PDB 文件解决办法
  3. 云计算 Restfull API 设计之旅
  4. nginx相关教程
  5. JS和DOM的关系
  6. 4.4.4 无锁的对象引用:AtomicReference和AtomicStampedReference
  7. POC索引
  8. osgQt支持触摸屏
  9. css 字体上下居中显示 解决安卓手机line-height的偏差
  10. 重装ubuntu