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 tools之tooltip
Jul 25 Javascript
javascript中的startWith和endWith的几种实现方法
May 07 Javascript
jQuery中scrollLeft()方法用法实例
Jan 16 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
Mar 04 Javascript
微信小程序 this和that详解及简单实例
Feb 13 Javascript
JS完成画圆圈的小球
Mar 07 Javascript
Angular4学习笔记之新建项目的方法
Jul 18 Javascript
通过js控制时间,一秒一秒自己动的实例
Oct 25 Javascript
Vue中如何实现proxy代理
Apr 20 Javascript
BootStrap中的模态框(modal,弹出层)功能示例代码
Nov 02 Javascript
原生js实现公告滚动效果
Jan 10 Javascript
vue移动端模态框(可传参)的实现
Nov 20 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登陆页的密码处理方式分享
2013/10/14 PHP
destoon实现调用图文新闻的方法
2014/08/21 PHP
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
PHP自定义函数实现格式化秒的方法
2016/09/14 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
Javascript hasOwnProperty 方法 &amp; in 关键字
2008/11/26 Javascript
学习ExtJS border布局
2009/10/08 Javascript
网易JS面试题与Javascript词法作用域说明
2010/11/09 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
jQuery实现的导航条切换可显示隐藏
2014/10/22 Javascript
JSON取值前判断
2014/12/23 Javascript
JavaScript中var关键字的使用详解
2015/08/14 Javascript
js date 格式化
2017/02/15 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
基于javaScript的this指向总结
2017/07/22 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
Vue实现的父组件向子组件传值功能示例
2019/01/19 Javascript
深入Node TCP模块的理解
2019/03/13 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
[00:53]TI3正赛第三天 DK怒破A队不败金身 现场国旗飘扬热血激昂
2013/08/10 DOTA
python读取word文档的方法
2015/05/09 Python
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
Python自动化运维之IP地址处理模块详解
2017/12/10 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
python linecache 处理固定格式文本数据的方法
2019/01/08 Python
python调用百度地图WEB服务API获取地点对应坐标值
2019/01/16 Python
Pandas之MultiIndex对象的示例详解
2019/06/25 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
HSRP的含义以及如何工作
2014/09/10 面试题
工程师岗位职责
2013/11/08 职场文书
道歉短信大全
2015/05/12 职场文书
重阳节主题班会
2015/08/17 职场文书
2019幼儿教师求职信(3篇)
2019/09/20 职场文书