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 相关文章推荐
将string解析为json的几种方式小结
Nov 11 Javascript
js删除所有的cookie的代码
Nov 25 Javascript
javascript设计模式之解释器模式详解
Jun 05 Javascript
JavaScript中Date对象的常用方法示例
Oct 24 Javascript
Bootstrap每天必学之前端开发框架
Nov 19 Javascript
js实现水平滚动菜单导航
Jul 21 Javascript
关于JavaScript中的this指向问题总结篇
Jul 23 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
Jun 26 Javascript
vue filter 完美时间日期格式的代码
Aug 14 Javascript
vue-cli3 引入 font-awesome的操作
Aug 11 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
Nov 20 Javascript
让JavaScript代码更加精简的方法技巧
Jun 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 设计模式之 单例模式
2008/12/19 PHP
php设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
PDO::quote讲解
2019/01/29 PHP
33个优秀的 jQuery 图片展示插件分享
2012/03/14 Javascript
js获取当月最后一天实例代码
2013/11/19 Javascript
JavaScript中创建对象和继承示例解读
2014/02/12 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
jquery跟js初始化加载的多种方法及区别介绍
2014/04/02 Javascript
JavaScript中操作字符串小结
2015/05/04 Javascript
Google 地图API Map()构造器详解
2016/08/06 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
2017/04/25 Javascript
详解JavaScript修改注册表的方法
2020/01/05 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
[01:28:31]《加油DOTA》真人秀 第五期
2014/09/01 DOTA
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
Python使用当前时间、随机数产生一个唯一数字的方法
2017/09/18 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
python实现windows下文件备份脚本
2018/05/27 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
django的ORM模型的实现原理
2019/03/04 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
python获取响应某个字段值的3种实现方法
2020/04/30 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
2020/06/28 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
深入解析HTML5中的Blob对象的使用
2015/09/08 HTML / CSS
String是最基本的数据类型吗?
2013/06/13 面试题
C/C++程序员常见面试题二
2015/11/19 面试题
生活小常识广播稿
2014/09/16 职场文书
工伤事故证明
2014/10/20 职场文书
省委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
颐和园导游词
2015/01/30 职场文书
2015年高一班主任工作总结
2015/05/13 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
python_tkinter事件类型详情
2022/03/20 Python