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传递变量: 值传递?引用传递?
Feb 22 Javascript
JavaScript使用slice函数获取数组部分元素的方法
Apr 06 Javascript
在JS方法中返回多个值的方法汇总
May 20 Javascript
JS实现“隐藏与显示”功能(多种方法)
Nov 24 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
Jan 19 Javascript
JavaScript通过filereader接口读取文件
May 10 Javascript
JavaScript中的FileReader图片预览上传功能实现代码
Jul 24 Javascript
vue 的keep-alive缓存功能的实现
Mar 22 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
May 15 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
May 17 Javascript
javascript实现自由编辑图片代码详解
Jun 21 Javascript
Express 配置HTML页面访问的实现
Nov 01 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 获取文件路径(灵活应用__FILE__)
2013/02/15 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
PHP获取一段文本显示点阵宽度和高度的方法
2015/03/12 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
JavaScript执行顺序详细介绍
2013/12/04 Javascript
jQuery处理json数据返回数组和输出的方法
2015/03/11 Javascript
JS使用ajax方法获取指定url的head信息中指定字段值的方法
2015/03/24 Javascript
JavaScript接口的实现三种方式(推荐)
2016/06/14 Javascript
基于jQuery的ajax方法封装
2016/07/14 Javascript
JavaScript中最常见的三个面试题解析
2017/03/04 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
2017/03/27 jQuery
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
详解Python中for循环的使用
2015/04/14 Python
Python面向对象特殊成员
2017/04/24 Python
Python pandas常用函数详解
2018/02/07 Python
Python使用分布式锁的代码演示示例
2018/07/30 Python
python 文件查找及内容匹配方法
2018/10/25 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
2018/11/29 Python
简单分析python的类变量、实例变量
2019/08/23 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
妙用itchat! python实现久坐提醒功能
2019/11/25 Python
套娃式文件夹如何通过Python批量处理
2020/08/23 Python
施华洛世奇美国官网:SWAROVSKI美国
2018/02/08 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
怎样写留学自荐信
2013/11/11 职场文书
体育教师个人的自我评价
2014/02/16 职场文书
学生会个人总结范文
2015/02/15 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书
2019终止劳动合同协议书最新范本!
2019/07/09 职场文书
Python 文字识别
2022/05/11 Python