js导出table到excel同时兼容FF和IE示例


Posted in Javascript onSeptember 03, 2013
<pre name="code" class="html">前台调用(第一个参数是table的id): <input value="导出" type="button" /> 
function toExcel(inTblId, inWindow) { 
if ($.browser.msie) { //如果是IE浏览器 
try { 
var allStr = ""; 
var curStr = ""; 
if (inTblId != null && inTblId != "" && inTblId != "null") { 
curStr = getTblData(inTblId, inWindow); 
} 
if (curStr != null) { 
allStr += curStr; 
} 
else { 
alert("你要导出的表不存在!"); 
return; 
} 
var fileName = getExcelFileName(); 
doFileExport(fileName, allStr); 
} 
catch (e) { 
alert("导出发生异常:" + e.name + "->" + e.description + "!"); 
} 
} 
else { 
window.open('data:application/vnd.ms-excel,' + encodeURIComponent($('div[id$=divGvData]').html())); 
e.preventDefault(); 
} 
} 
function getTblData(inTbl, inWindow) { 
var rows = 0; 
var tblDocument = document; 
if (!!inWindow && inWindow != "") { 
if (!document.all(inWindow)) { 
return null; 
} 
else { 
tblDocument = eval(inWindow).document; 
} 
} 
var curTbl = tblDocument.getElementById(inTbl); 
if (curTbl.rows.length > 65000) { 
alert('源行数不能大于65000行'); 
return false; 
} 
if (curTbl.rows.length <= 1) { 
alert('数据源没有数据'); 
return false; 
} 
var outStr = ""; 
if (curTbl != null) { 
for (var j = 0; j < curTbl.rows.length; j++) { 
for (var i = 0; i < curTbl.rows[j].cells.length; i++) { 
if (i == 0 && rows > 0) { 
outStr += " \t"; 
rows -= 1; 
} 
var tc = curTbl.rows[j].cells[i]; 
if (j > 0 && tc.hasChildNodes() && tc.firstChild.nodeName.toLowerCase() == "input") { 
if (tc.firstChild.type.toLowerCase() == "checkbox") { 
if (tc.firstChild.checked == true) { 
outStr += "是" + "\t"; 
} 
else { 
outStr += "否" + "\t"; 
} 
} 
} 
else { outStr += " "+curTbl.rows[j].cells[i].innerText + "\t"; 
} 
if (curTbl.rows[j].cells[i].colSpan > 1) { 
for (var k = 0; k < curTbl.rows[j].cells[i].colSpan - 1; k++) { 
outStr += " \t"; 
} 
} 
if (i == 0) { 
if (rows == 0 && curTbl.rows[j].cells[i].rowSpan > 1) { 
rows = curTbl.rows[j].cells[i].rowSpan - 1; 
} 
} 
} 
outStr += "\r\n"; 
} 
} 
else { 
outStr = null; 
alert(inTbl + "不存在!"); 
} 
return outStr; 
} 
function getExcelFileName() { 
var d = new Date(); 
var curYear = d.getYear(); 
var curMonth = "" + (d.getMonth() + 1); 
var curDate = "" + d.getDate(); 
var curHour = "" + d.getHours(); 
var curMinute = "" + d.getMinutes(); 
var curSecond = "" + d.getSeconds(); 
if (curMonth.length == 1) { 
curMonth = "0" + curMonth; 
} 
if (curDate.length == 1) { 
curDate = "0" + curDate; 
} 
if (curHour.length == 1) { 
curHour = "0" + curHour; 
} 
if (curMinute.length == 1) { 
curMinute = "0" + curMinute; 
} 
if (curSecond.length == 1) { 
curSecond = "0" + curSecond; 
} 
var fileName = "设备状态" + curYear + curMonth + curDate + curHour + curMinute + curSecond + ".xls"; 
return fileName; 
} 
function doFileExport(inName, inStr) { 
var xlsWin = null; 
if (!!document.all("glbHideFrm")) { 
xlsWin = glbHideFrm; 
} 
else { 
var width = 1; 
var height = 1; 
var openPara = "left=" + (window.screen.width / 2 + width / 2) 
+ ",top=" + (window.screen.height + height / 2) 
+ ",scrollbars=no,width=" + width + ",height=" + height; 
xlsWin = window.open("", "_blank", openPara); 
} 
xlsWin.document.write(inStr); 
xlsWin.document.close(); 
xlsWin.document.execCommand('Saveas', true, inName); 
xlsWin.close(); 
} </pre> 
<pre></pre> 
<br>
Javascript 相关文章推荐
jquery模拟按下回车实现代码
Sep 20 Javascript
jquery 鼠标滑动显示详情应用示例
Jan 24 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
Dec 03 Javascript
jQuery为动态生成的select元素添加事件的方法
Aug 29 Javascript
Boostrap实现的登录界面实例代码
Oct 09 Javascript
discuz表情的JS提取方法分析
Mar 22 Javascript
javascript 数据存储的常用函数总结
Jun 01 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
Sep 20 Javascript
Angular表格神器ui-grid应用详解
Sep 29 Javascript
jQuery实现购物车的总价计算和总价传值功能
Nov 28 jQuery
Jquery实现无缝向上循环滚动列表的特效
Feb 13 jQuery
原生JS实现飞机大战小游戏
Jun 09 Javascript
js综合应用实例简单的表格统计
Sep 03 #Javascript
js关闭浏览器窗口及检查浏览器关闭事件
Sep 03 #Javascript
快速查找数组中的某个元素并返回下标示例
Sep 03 #Javascript
iframe的父子窗口之间的对象相互调用基本用法
Sep 03 #Javascript
使用jquery hover事件实现表格的隔行换色功能示例
Sep 03 #Javascript
使用js操作cookie的一点小收获分享
Sep 03 #Javascript
jquery 实现窗口的最大化不论什么情况
Sep 03 #Javascript
You might like
php中的动态调用实例分析
2015/01/07 PHP
PHP检测用户是否关闭浏览器的方法
2016/02/14 PHP
Windows服务器中PHP如何安装redis扩展
2019/09/27 PHP
JavaScript对象模型-执行模型
2008/04/28 Javascript
判断某个字符在一个字符串中是否存在的js代码
2014/02/28 Javascript
jQuery中的height innerHeight outerHeight区别示例介绍
2014/06/15 Javascript
Bootstrap表单布局
2016/07/19 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
AugularJS从入门到实践(必看篇)
2017/07/10 Javascript
js 中rewrap-ajax.js插件实例代码
2017/10/20 Javascript
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
VUE的history模式下除了index外其他路由404报错解决办法
2019/08/21 Javascript
Python最长公共子串算法实例
2015/03/07 Python
python制作企业邮箱的爆破脚本
2016/10/05 Python
Python简单网络编程示例【客户端与服务端】
2017/05/26 Python
Python数据拟合与广义线性回归算法学习
2017/12/22 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
深入浅析Python的类
2018/06/22 Python
如何更优雅地写python代码
2019/07/02 Python
python如何统计代码运行的时长
2019/07/24 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
超全Python图像处理讲解(多模块实现)
2020/04/13 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
浅谈CSS3鼠标移入图片动态提示效果(transform)
2017/11/06 HTML / CSS
html5中监听canvas内部元素点击事件的三种方法
2019/04/28 HTML / CSS
下述程序的作用是计算机数组中的最大元素值及其下标
2012/11/26 面试题
反腐倡廉剖析材料
2014/09/30 职场文书
写景作文评语集锦
2014/12/25 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
给老婆的检讨书
2015/01/27 职场文书
归元寺导游词
2015/02/06 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
幼儿园父亲节活动总结
2015/02/12 职场文书
Mysql事务索引知识汇总
2022/03/17 MySQL
MyBatis XPathParser解析器使用范例详解
2022/07/15 Java/Android