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做拖动布局的思路
May 31 Javascript
caller和callee的区别介绍及演示结果
Mar 10 Javascript
Bootstrap每天必学之js插件
Nov 30 Javascript
JavaScript学习笔记整理之引用类型
Jan 22 Javascript
jQuery判断checkbox选中状态
May 12 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
Jul 11 Javascript
关于JS变量和作用域详解
Jul 28 Javascript
jQuery图片加载显示loading效果
Nov 04 Javascript
详谈AngularJs 控制器、数据绑定、作用域
Jul 09 Javascript
Vue中的scoped实现原理及穿透方法
May 15 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
Aug 14 jQuery
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
Sep 11 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
打造计数器DIY三步曲(中)
2006/10/09 PHP
PHP判断数据库中的记录是否存在的方法
2014/11/14 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
图片在浏览器中底部对齐 解决方法之一
2011/11/30 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
JavaScript italics方法入门实例(把字符串显示为斜体)
2014/10/17 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
jquery制作 随机弹跳的小球特效
2015/02/01 Javascript
Bootstrap的图片轮播示例代码
2015/08/31 Javascript
jQuery基于muipicker实现仿ios时间选择
2016/02/22 Javascript
JavaScript位移运算符(无符号) &gt;&gt;&gt; 三个大于号 的使用方法详解
2016/03/31 Javascript
AngularJS  双向数据绑定详解简单实例
2016/10/20 Javascript
详解angularjs利用ui-route异步加载组件
2017/05/21 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
2018/08/31 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
[01:28:56]2014 DOTA2华西杯精英邀请赛 5 24 CIS VS DK
2014/05/26 DOTA
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
Python实现的堆排序算法原理与用法实例分析
2017/11/22 Python
Python爬虫运用正则表达式的方法和优缺点
2019/08/25 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
365 Tickets英国:全球景点门票
2019/07/06 全球购物
家得宝墨西哥官网:The Home Depot墨西哥
2019/11/18 全球购物
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
农民入党思想汇报
2014/01/03 职场文书
百日安全活动总结
2014/05/04 职场文书
2015年教师新年寄语
2014/12/08 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers
Mysql超详细讲解死锁问题的理解
2022/04/01 MySQL