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 登录验证实现代码
Sep 23 Javascript
js 点击按钮弹出另一页,选择值后,返回到当前页
May 26 Javascript
使用Js让Html中特殊字符不被转义
Nov 05 Javascript
js+html5实现可在手机上玩的拼图游戏
Jul 17 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
Nov 03 Javascript
微信小程序图片横向左右滑动案例
May 19 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
May 28 Javascript
AngularJS ionic手势事件的使用总结
Aug 09 Javascript
详解Vue结合后台的列表增删改案例
Aug 21 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
Jun 12 Javascript
vue回到顶部监听滚动事件详解
Aug 02 Javascript
微信小程序通过js实现瀑布流布局详解
Aug 28 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批量去除文件UTF8 BOM信息
2013/08/05 PHP
php导出中文内容excel文件类实例
2015/07/06 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
2016/03/22 PHP
php关闭warning问题的解决方法
2016/05/17 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
2019/12/13 PHP
基于jQuery的树控件实现代码(asp.net+json)
2010/07/11 Javascript
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
2011/11/15 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
常用javascript表单验证汇总
2020/07/20 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
2016/05/31 Javascript
JS修改地址栏参数实例代码
2016/06/14 Javascript
利用vue组件自定义v-model实现一个Tab组件方法示例
2017/12/06 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
[04:11]2014DOTA2国际邀请赛 CIS遗憾出局梦想不灭
2014/07/09 DOTA
Python map和reduce函数用法示例
2015/02/26 Python
详解python单例模式与metaclass
2016/01/15 Python
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
python将ansible配置转为json格式实例代码
2017/05/15 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
在终端启动Python时报错的解决方案
2020/11/20 Python
python不同版本的_new_不同点总结
2020/12/09 Python
python 录制系统声音的示例
2020/12/21 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
2021/02/22 Python
新加坡网上化妆品店:Best Buy World
2018/05/18 全球购物
马来西亚奢侈品牌购物商城:Valiram 247
2020/09/29 全球购物
毕业生找工作的自我评价
2013/10/18 职场文书
英语专业学生个人求职信范文
2014/01/06 职场文书
产品质量承诺范本
2014/03/31 职场文书
沙滩主题婚礼活动策划方案
2014/09/15 职场文书
公证书格式
2015/01/23 职场文书
六一儿童节主持开场白
2015/05/28 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书
Mysql存储过程、触发器、事件调度器使用入门指南
2022/01/22 MySQL