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 eval函数深入认识
Feb 21 Javascript
Javascript 设计模式(二) 闭包
May 26 Javascript
实现变速回到顶部的JavaScript代码
May 09 Javascript
jQuery侧边栏随窗口滚动实现方法
Mar 04 Javascript
javascript重写alert方法的实例代码
Mar 29 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
Jun 13 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
Aug 17 jQuery
使用vue与jquery实时监听用户输入状态的操作代码
Sep 19 jQuery
webpack file-loader和url-loader的区别
Jan 15 Javascript
vue实现日历备忘录功能
Sep 24 Javascript
JavaScript实现与web通信的方法详解
Aug 07 Javascript
如何用JavaScript检测当前浏览器是无头浏览器
Apr 27 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生成静态页面详解
2006/11/19 PHP
php中看实例学正则表达式
2006/12/25 PHP
ionCube 一款类似zend的PHP加密/解密工具
2010/07/25 PHP
JS中 用户登录系统的解决办法
2013/04/15 Javascript
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
javascript搜索框点击文字消失失焦时文本出现
2014/09/18 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
bootstrap实现的自适应页面简单应用示例
2017/03/09 Javascript
JavaScript队列的应用实例详解【经典数据结构】
2017/04/12 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
详解Vue2 SSR 缓存 Api 数据
2017/11/20 Javascript
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
JS通过位运算实现权限加解密
2018/08/14 Javascript
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
vue中监听返回键问题
2019/08/28 Javascript
Python字典操作简明总结
2015/04/13 Python
Python类的继承和多态代码详解
2017/12/27 Python
python实现汽车管理系统
2018/11/30 Python
带你认识Django
2019/01/15 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
Keras设置以及获取权重的实现
2020/06/19 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
2021/02/27 Python
Tripadvisor新西兰:阅读评论,比较价格和酒店预订
2018/02/10 全球购物
行政经理的岗位职责
2013/11/23 职场文书
综合办公室主任职责
2013/12/16 职场文书
企业总经理职责
2014/02/02 职场文书
《荷花》教学反思
2014/04/16 职场文书
《特殊的葬礼》教学反思
2014/04/27 职场文书
岗位说明书怎么写
2014/07/30 职场文书
2014年化验室工作总结
2014/11/21 职场文书
团代会闭幕词
2015/01/28 职场文书
高中教师个人总结
2015/02/10 职场文书
《全神贯注》教学反思
2016/02/22 职场文书
导游词之杭州西湖
2019/09/19 职场文书
Windows7下FTP搭建图文教程
2022/08/05 Servers