js导出excel兼容各个主流浏览器
来源:互联网 发布:淘宝网店推荐 编辑:程序博客网 时间:2024/06/13 08:10
废话不多说直接上代码
<html><head><script type="text/javascript" language="javascript"> var idTmr; function getExplorer() { var explorer = window.navigator.userAgent ; //ie if (explorer.indexOf("MSIE") >= 0) { return 'ie'; } //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 method1(tableid) {//整个表格拷贝到EXCEL中 if(getExplorer()=='ie') { var curTbl = document.getElementById(tableid); var oXL = new ActiveXObject("Excel.Application"); //创建AX对象excel var oWB = oXL.Workbooks.Add(); //获取workbook对象 var xlsheet = oWB.Worksheets(1); //激活当前sheet var sel = document.body.createTextRange(); sel.moveToElementText(curTbl); //把表格中的内容移到TextRange中 sel.select; //全选TextRange中内容 sel.execCommand("Copy"); //复制TextRange中内容 xlsheet.Paste(); //粘贴到活动的EXCEL中 oXL.Visible = true; //设置excel可见属性 try { var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls"); } catch (e) { print("Nested catch caught " + e); } finally { oWB.SaveAs(fname); oWB.Close(savechanges = false); //xls.visible = false; oXL.Quit(); oXL = null; //结束excel进程,退出完成 //window.setInterval("Cleanup();",1); 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 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><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>{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)) } })() </script></head><body><table id="WDL"> <tr> <td>1</td> <td>WDL</td> <td>23</td> <td>134242</td> <td>上海</td> </tr> <tr> <td>2</td> <td>YY</td> <td>23</td> <td>134242</td> <td>北京</td> </tr></table><input id="Button1" type="button" value="导出EXCEL" onclick="javascript:method1('WDL')" /></body></html>
以上代码只能导出当前页,上边代码是网上找的,
研究之后发现,想导出全部数据也很简单,只需要ajax请求数据,然后组装后把值赋值给table
var ctx = {worksheet: name || 'Worksheet', table: 123//此处写ajax请求数据组装后的内容,比如是123,导出就是123}
但导出所有数据一般应该后端来写,要不会很慢
有不足之处还望之处
追加,发现这个不能指定文件名,我们可以利用a 标签的download属性
具体代码如下
<html><head> <meta charset="utf-8"><script type="text/javascript" language="javascript"> var idTmr; function getExplorer() { var explorer = window.navigator.userAgent ; //ie if (explorer.indexOf("MSIE") >= 0) { return 'ie'; } //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 method1(tableid) {//整个表格拷贝到EXCEL中 if(getExplorer()=='ie') { var curTbl = document.getElementById(tableid); var oXL = new ActiveXObject("Excel.Application"); //创建AX对象excel var oWB = oXL.Workbooks.Add(); //获取workbook对象 var xlsheet = oWB.Worksheets(1); //激活当前sheet var sel = document.body.createTextRange(); sel.moveToElementText(curTbl); //把表格中的内容移到TextRange中 sel.select; //全选TextRange中内容 sel.execCommand("Copy"); //复制TextRange中内容 xlsheet.Paste(); //粘贴到活动的EXCEL中 oXL.Visible = true; //设置excel可见属性 try { var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls"); } catch (e) { print("Nested catch caught " + e); } finally { oWB.SaveAs(fname); oWB.Close(savechanges = false); //xls.visible = false; oXL.Quit(); oXL = null; //结束excel进程,退出完成 //window.setInterval("Cleanup();",1); 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 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>' +'<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>{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)) document.getElementById("Awdl").href = uri + base64(format(template, ctx)); document.getElementById("Awdl").click(); } })() </script></head><body><table id="wdl"> <tr> <td>1</td> <td>WDL</td> <td>23</td> <td>134242</td> <td>上海</td> </tr> <tr> <td>2</td> <td>YY</td> <td>23</td> <td>134242</td> <td>北京</td> </tr></table><a id="Awdl" style="display:none;" download="WDL.xls"></a><input id="Button1" type="button" value="导出EXCEL" onclick="javascript:method1('wdl')" /></body></html>
至此基本到处excel已实现
阅读全文
1 0
- js导出excel兼容各个主流浏览器
- js导出Excel浏览器兼容
- jsp导出excel浏览器兼容
- 浏览器端JS导出EXCEL
- 浏览器端JS导出EXCEL
- 文章标题js将网页表格导出为excel表格(兼容各种浏览器)
- js导出excel, 并解决文件名是随机的问题,兼容多个浏览器
- js鼠标滑轮滚动事件绑定(兼容主流浏览器)
- audio.js兼容主流浏览器的音乐播放器
- JS实现文本复制功能,兼容主流浏览器
- JS日期选择器(兼容IE,Firefox,Opera等主流浏览器)
- JS复制到剪切板(兼容主流所有浏览器)
- JS日期选择器(兼容IE,Firefox,Opera等主流浏览器)
- js 下载Base64格式数据图片(兼容主流浏览器)
- js获取点击事件的位置,兼容主流浏览器
- 一句话解决JS获得图片尺寸问题,兼容各个浏览器
- JS解析XML文档中的数据(兼容各个浏览器)
- CSS hack与各个浏览器兼容、JS等
- 计算机网络常见面试题
- 线性回归以及局部加权回归
- Best定理和MatrixTree定理 学习笔记
- cmake参数说明手册
- python jieba分词(结巴分词)、提取词,加载词,修改词频,定义词库
- js导出excel兼容各个主流浏览器
- Android socket通信的长连接与心跳检测
- hdu6060 RXD and dividing
- 宏定义中 “#”的用法
- Nandflash和Norflash区别
- 顶部动态列表GridView+底部viewpager+fragment切换滑动
- nginx部署
- Spring Cloud微服务(8)之 sleuth+zipkin日志聚合
- Linux 下的 Python 多版本管理(pyenv)