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 相关文章推荐
javascript在事件监听方面的兼容性小结
Apr 07 Javascript
jQuery根据纬度经度查看地图处理程序
May 08 Javascript
javascript中加号(+)操作符的一些神奇作用
Jun 06 Javascript
javascript中Object使用详解
Jan 26 Javascript
js实现密码强度检测【附示例】
Mar 30 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
Nov 21 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
Dec 23 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
Feb 06 Javascript
vue使用jsonp抓取qq音乐数据的方法
Jun 21 Javascript
webpack自动打包和热更新的实现方法
Jun 24 Javascript
JS实现4位随机验证码
Oct 19 Javascript
微信小程序实现锚点跳转
Nov 23 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
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
php生出随机字符串
2017/07/06 PHP
Javascript中的this绑定介绍
2011/09/22 Javascript
js函数获取html中className所在的内容并去除标签
2013/09/08 Javascript
Jquery validation remote 验证的缓存问题解决方法
2014/03/25 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
js实现带有介绍的Select列表菜单实例
2015/08/18 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
BootStrap 智能表单实战系列(五) 表单依赖插件处理
2016/06/13 Javascript
AngularJs directive详解及示例代码
2016/09/01 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
vue二级路由设置方法
2018/02/09 Javascript
Vue源码解析之数据响应系统的使用
2019/04/24 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
Python logging模块学习笔记
2014/05/24 Python
python通过pil模块获得图片exif信息的方法
2015/03/16 Python
python实现决策树
2017/12/21 Python
python实现简易内存监控
2018/06/21 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
python os.path.isfile 的使用误区详解
2019/11/29 Python
使用Python将语音转换为文本的方法
2020/08/10 Python
浅析Python 责任链设计模式
2020/09/11 Python
如何基于Python实现word文档重新排版
2020/09/29 Python
Django REST Framework 分页(Pagination)详解
2020/11/30 Python
如何进行Linux分区优化
2016/09/13 面试题
竞聘书怎么写,如何写?
2014/03/31 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
水浒传读书笔记
2015/06/25 职场文书
社区结对共建协议书
2016/03/23 职场文书
演讲稿之我的初心我的成长
2019/08/12 职场文书
python使用pygame创建精灵Sprite
2021/04/06 Python
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
2022/08/14 Python