首先判断手否是IE,原因在于IE导出我用的是ActiveXObject,判断的方式很简单,只需要拿到window.navigator.userAgent即可进行判断,代码如下

function getExplorer() {
if (window.navigator.userAgent.indexOf("MSIE") >= ) {
return ;
} else if (window.navigator.userAgent.indexOf("Firefox") >= ) {
return ;
} else if (window.navigator.userAgent.indexOf("Chrome") >= ) {
return ;
} else if (window.navigator.userAgent.indexOf("Opera") >= ) {
return ;
} else if (window.navigator.userAgent.indexOf("Safari") >= ) {
return ;
} else {
return ;
}
}

下面函数就是当浏览器是IE时调用的函数(注意该函数只能将table表格打开在Excel中,并非真正的保存)

function Msie(id) {
var tabID= document.getElementById(id);
var aXO = new ActiveXObject("Excel.Application");
var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
var len= tabID.rows.length; //取得表格行数
for (i = ; i < len; i++){
var Lenc = tabID.rows(i).cells.length; //取得每行的列数
for (j = ; j < Lenc; j++)
{
oSheet.Cells(i + , j + ).value = tabID.rows(i).cells(j).innerText;
//赋值
}
}
aXO.Visible = true;
}

当浏览器为高级浏览器时(非IE及IE内核的浏览器)调用函数

function other(mytalbe){
var table = document.getElementById(mytalbe);
// 克隆(复制)此table元素,这样对复制品进行修改(如添加或改变table的标题等),导出复制品,而不影响原table在浏览器中的展示。
table = table.cloneNode(true);
var uri = 'data:application/vnd.ms-excel;base64,',
template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><?xml version="1.0" encoding="UTF-8" standalone="yes"?><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table style="vnd.ms-excel.numberformat:@">{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];
});
};
if(!table.nodeType) table = document.getElementById(table);
var ctx = {
worksheet: name || 'Worksheet',
table: table.innerHTML
};
window.location.href = uri + base64(format(template, ctx));
}

然后封装下面的函数并判断是否是IE

function tabletoExcel(tableID) {
if(getExplorer() == )
     Msie(tableID)
}else{
other(mytalbe)
}
}

之后在需要输出table的地方调用就好了

最新文章

  1. 挂FORM时找不到对应的功能(function)
  2. Python文件使用“wb”方式打开,写入内容
  3. 【原创】Android内存管理-OnTrimMemory
  4. npm常用命令小结
  5. HTTP 传输内容的压缩
  6. C++可能出错的小细节
  7. tomcat提供文件下载
  8. Imread函数不好使的替用方法
  9. mssql 置疑的处理
  10. rnqoj-99-配置魔药-dp
  11. C# winform 递归选中TreeView子节点
  12. 在JBuilder8中使用ANT
  13. 自定义控件之--继承控件(圆形TextView)
  14. 51Nod 1007 正整数分组 01背包
  15. bzoj 3996: [TJOI2015]线性代数
  16. 使用BigDecimal报的错
  17. 在linux系统中出现u盘问题 的相关解决方法
  18. .NetCore技术研究-EntityFramework Core 3.0 Preview
  19. 在vue项目中使用axios发送FormData
  20. springboot获取properties文件的配置内容(转载)

热门文章

  1. 第三周Linux编程实例练习
  2. [GO]随机生成切片元素并使用冒泡排序方式进行排序
  3. Java IO输入输出流 FileWriter 字符流
  4. [原创]Java中使用File类的list方法获取一定数量的文件:FilenameFilter接口的特殊用法
  5. postfix 安装配置详解
  6. Microsoft.Office.Interop.Word.DocumentClass.SaveAs 命令失败
  7. ASP.Net UpdatePanel控件 局部刷新 &amp;&amp; 弹出提示信息
  8. angular 事件绑定
  9. 如何从Spring官网下载Spring的jar包
  10. AppIcon应用图标 and Launchimage启动图标的制作