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 对象中的类数组操作
Apr 27 Javascript
推荐10个超棒的jQuery工具提示插件
Oct 11 Javascript
JS实现可点击展开与关闭的左侧广告代码
Sep 02 Javascript
jQuery使用$.ajax提交表单完整实例
Dec 11 Javascript
JS实现单击输入框弹出选择框效果完整实例
Dec 14 Javascript
Angularjs material 实现搜索框功能
Mar 08 Javascript
详解在Vue中通过自定义指令获取dom元素
Mar 04 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
Mar 29 Javascript
关于webpack2和模块打包的新手指南(小结)
Aug 07 Javascript
node使用Koa2搭建web项目的方法
Oct 17 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
Jul 25 jQuery
JS用最简单的方法实现四舍五入
Aug 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
杏林同学录(八)
2006/10/09 PHP
使用php重新实现PHP脚本引擎内置函数
2007/03/06 PHP
PHP设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
PHP中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
PHP实现HTML页面静态化的方法
2015/11/04 PHP
php 猴子摘桃的算法
2017/06/20 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
2018/05/31 PHP
js实现简单模态窗口,背景灰显
2008/11/14 Javascript
Jquery Post处理后不进入回调的原因及解决方法
2014/07/15 Javascript
jQuery 中DOM 操作详解
2015/01/13 Javascript
JavaScript基于原型链的继承
2016/06/22 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
bootstrap table单元格新增行并编辑
2017/05/19 Javascript
Node.js进阶之核心模块https入门
2018/05/23 Javascript
vue路由组件按需加载的几种方法小结
2018/07/12 Javascript
解决layer弹层遮罩挡住窗体的问题
2018/08/17 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
JS学习笔记之数组去重实现方法小结
2019/05/29 Javascript
浅探express路由和中间件的实现
2019/09/30 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
python中pycurl库的用法实例
2014/09/30 Python
使用python实现BLAST
2018/02/12 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
2018/05/24 Python
python 制作自定义包并安装到系统目录的方法
2018/10/27 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
python统计文章中单词出现次数实例
2020/02/27 Python
Lombok插件安装(IDEA)及配置jar包使用详解
2020/11/04 Python
css3实现可滑动跳转的分页插件示例
2014/05/08 HTML / CSS
YII2 全局异常处理深入讲解
2021/03/24 PHP
毕业生自荐信
2013/12/14 职场文书
高中教师先进事迹材料
2014/08/22 职场文书
党员学习群众路线心得体会
2014/11/04 职场文书
初婚初育证明范本
2014/11/24 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书
python实现简易自习室座位预约系统
2021/06/30 Python