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 Ajax之load()方法
Oct 12 Javascript
jquery 日期分离成年月日的代码
May 14 Javascript
Jquery实现视频播放页面的关灯开灯效果
May 27 Javascript
解析JavaScript中的标签语句
Jun 19 Javascript
window.location 对象所包含的属性
Oct 10 Javascript
node.js中的console.log方法使用说明
Dec 09 Javascript
jQuery中removeData()方法用法实例
Dec 27 Javascript
jQuery简单动画变换效果实例分析
Jul 04 Javascript
JavaScript原型式继承实现方法
Nov 06 Javascript
微信域名检测接口调用演示步骤(含PHP、Python)
Dec 08 Javascript
微信小程序实现滚动Tab选项卡
Nov 16 Javascript
VUE递归树形实现多级列表
Jul 15 Vue.js
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
str_replace只替换一次字符串的方法
2013/04/09 PHP
ThinkPHP实现事务回滚示例代码
2014/06/23 PHP
PHP中使用正则表达式提取中文实现笔记
2015/01/20 PHP
PHP线程的内存回收问题
2016/07/08 PHP
php、java、android、ios通用的3des方法(推荐)
2016/09/09 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
jquery 弹出层实现代码
2009/10/30 Javascript
JS Range HTML文档/文字内容选中、库及应用介绍
2011/05/12 Javascript
用jQuery模拟select下拉框的简单示例代码
2014/01/26 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
2014/01/31 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
基于jquery实现等比缩放图片
2014/12/03 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
Bootstrap每天必学之进度条
2015/11/30 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
浅谈在koa2中实现页面渲染的全局数据
2017/10/09 Javascript
Vue.js组件间的循环引用方法示例
2017/12/27 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
2018/10/12 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
vue实现页面滚动到底部刷新
2019/08/16 Javascript
python实现的系统实用log类实例
2015/06/30 Python
Python程序退出方式小结
2017/12/09 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
2018/01/06 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
为数据库创建索引都需要注意些什么
2012/07/17 面试题
商务英语专业应届毕业生求职信
2013/10/28 职场文书
策划总监岗位职责
2014/02/16 职场文书
困难补助申请报告
2015/05/19 职场文书
Python机器学习算法之决策树算法的实现与优缺点
2021/05/13 Python
Python机器学习之底层实现KNN
2021/06/20 Python