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插件开发方法(附完整实例及下载)
Apr 01 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
May 17 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
Jun 17 Javascript
JS实现无缝循环marquee滚动效果
May 22 Javascript
前端构建工具之gulp的语法教程
Jun 12 Javascript
基于dataset的使用和图片延时加载的实现方法
Dec 11 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
Aug 19 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
Mar 31 Javascript
在Vue环境下利用worker运行interval计时器的步骤
Aug 01 Javascript
JsonProperty 的使用方法详解
Oct 11 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
May 12 Javascript
Javascript 解构赋值详情
Nov 17 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 preg_filter执行一个正则表达式搜索和替换
2012/02/27 PHP
php读取3389的脚本
2014/05/06 PHP
PHP模拟asp.net的StringBuilder类实现方法
2015/08/08 PHP
php7基于递归实现删除空文件夹的方法示例
2017/06/15 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
Javascript valueOf 使用方法
2008/12/28 Javascript
javascript算法学习(直接插入排序)
2011/04/12 Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
jQuery中的100个技巧汇总
2016/12/15 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
2017/05/03 Javascript
浅析JavaScript中的平稳退化(graceful degradation)
2017/07/24 Javascript
js学习总结之DOM2兼容处理this问题的解决方法
2017/07/27 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
2018/10/25 Javascript
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
JavaScript实现切换多张图片
2021/01/27 Javascript
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
python基础教程之循环介绍
2014/08/29 Python
python设置环境变量的作用和实例
2019/07/09 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
django 使用全局搜索功能的实例详解
2019/07/18 Python
原生python实现knn分类算法
2019/10/24 Python
python判断是空的实例分享
2020/07/06 Python
分享CSS3中必须要知道的10个顶级命令
2012/04/26 HTML / CSS
利用CSS3伪元素实现逐渐发光的方格边框
2017/05/07 HTML / CSS
Missguided美国官网:英国时尚品牌
2018/01/18 全球购物
Intimissimi德国网上商店:意大利知名内衣品牌
2018/04/03 全球购物
超市促销实习自我鉴定
2013/09/23 职场文书
赔偿协议书范本
2014/09/12 职场文书
会计专业自荐信范文
2015/03/05 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书
Linux服务器离线安装 nginx的详细步骤
2022/06/16 Servers