如何将网页表格内容导入excel


Posted in Javascript onFebruary 18, 2014

将访问的页面加入到可信任站点

//导出到Excel,注意,表格标记内不得有注释,因为childNodes会把注释也算进去 
//如果出错,需要关闭Excel,否则Excel进程会一直运行着 
//td中只能有一个input值 
//非td间不可以有组建 否则报缺少“;”错误 
//引用页面加上<script type="text/javascript" src="execl.js"></script> 
//添加按钮<input style="height:26px" type="button" name="btnExcel" value="导出excel" onClick="ExportExcel(this,'tableNr','','表头');"/> 
//将table表的id和class设置为tableNr 
function ExportExcel(btn,TabId,strCols,sTitle,sHeader,sFooter){ 
//alert('ssss'); 
btn.style.cursor = "wait"; 
event.returnValue = false; 
//try{ 
var tab = document.getElementById(TabId); 
// if(tab == null) tab = document.getElementById("dg") 
//if(tab == null) tab = document.getElementById("db") 
//if(tab == null) tab = document.getElementById(TabId) 
if(tab == null){ 
alert("缺少表格对象"); 
btn.style.cursor = "hand"; 
return; 
} 
var t = tab.firstChild; 
var rows = t.childNodes.length; 
//alert(t.nodeName); //test 
var tds = t.childNodes[0].childNodes.length; 
var cols = 0; 
for(var i=0;i<tds;i++){ 
var td = t.childNodes[0].childNodes[i]; 
if(parseInt(td.colSpan)>1){ 
cols += parseInt(td.colSpan); 
} 
else{ 
cols++; 
} 
} 
try{ 
var oXL = new ActiveXObject("Excel.Application"); 
}catch(e){ 
alert("请确认已经安装了Excel并允许运行Excel!"); 
alert("无法启动Excel,请确保电脑中已经安装了Excel!\n\n如果已经安装了Excel,"+"请将ip地址加入信任站点,并调整IE信任站点的安全级别。\n\n具体操作:\n\n"+"工具 → Internet选项 → 安全 → 自定义级别 → ActiveX 控件和插件 → 对未标记为可安全执行脚本的ActiveX 控件初始化并执行脚本 → 启用 → 确定"); 
btn.style.cursor = "hand"; 
return; 
} 
oXL.Workbooks.Add(); 
var obook = oXL.ActiveWorkBook; 
var osheets = obook.Worksheets; 
var osheet = obook.Sheets(1); 
var xlrow = 1; 
//添加标题 
if((sTitle == "") || (typeof(sTitle)=="undefined") || (sTitle==null)){ 
var t_tdHeadc = document.getElementById("tdHeadc"); 
if(t_tdHeadc != null){ 
sTitle = t_tdHeadc.innerText; 
var sk = sTitle.lastIndexOf("-->")+3; 
sTitle = sTitle.substring(sk); 
} 
} 
osheet.Cells(1, 1) = sTitle; 
osheet.Range(osheet.Cells(xlrow, 1),osheet.Cells(xlrow,cols)).Select(); //选择该列 
oXL.Selection.HorizontalAlignment = 3; //居中 
oXL.Selection.MergeCells = true; 
xlrow++; 
//小标题 
if((sHeader == "") || (typeof(sHeader)=="undefined") || (sHeader==null)){ 
sHeader = ""; 
} 
if(sHeader != ""){ 
osheet.Cells(2, 1) = sHeader; 
osheet.Range(osheet.Cells(xlrow, 1),osheet.Cells(xlrow,cols)).Select(); //选择该列 
//oXL.Selection.HorizontalAlignment = 3; //居中 
oXL.Selection.MergeCells = true; 
xlrow++; 
} 
var winX = (screen.width - 300) / 2; 
var winY = (screen.height - 120) / 2; var win = window.open("","","directories=0,location=0,memubar=0,scrollbars=0,status=0,toolbar=0,width=230,height=75,left=" + winX + ",top=" + winY); 
win.document.write('<html><title>' + sTitle + '导出Excel</title><body><div id="m_pub_wzs_progress_x" style="background:white;overflow:hidden;padding-top:0;display:none;position:absolute;left:10px;top:25px;"><table id="m_pub_wzs_progress_tab" border=0 cellspacing=1 bgcolor="#CCCCCC" style="display:inline;border-width:1px;border-style:solid;border-left-color:#333333;border-top-color:#333333;border-right-color:#EEEEEE;border-bottom-color:#EEEEEE;">'); 
win.document.write('<tr height=17><td width=4 bgcolor="#000088"></td><td width=4 bgcolor="#000088"></td><td width=4 bgcolor="#000088"></td><td width=4 bgcolor="#000088"></td><td width=4 bgcolor="#000088"></td><td width=4 bgcolor="#000088"></td><td width=4 bgcolor="#000088"></td><td width=4 bgcolor="#000088"></td><td width=4 bgcolor="#000088"></td><td width=4 bgcolor="#000088"></td><td width=4 bgcolor="#000088"></td><td width=4 bgcolor="#000088"></td><td width=4 bgcolor="#000088"></td><td width=4 bgcolor="#000088"></td><td width=4 bgcolor="#CCCCCC"></td><td width=4 bgcolor="#CCCCCC"></td><td width=4 bgcolor="#CCCCCC"></td><td width=4 bgcolor="#CCCCCC"></td><td width=4 bgcolor="#CCCCCC"></td><td width=4 bgcolor="#CCCCCC"></td><td width=4 bgcolor="#CCCCCC"></td><td width=4 bgcolor="#CCCCCC"></td><td width=4 bgcolor="#CCCCCC"></td><td width=4 bgcolor="#CCCCCC"></td><td width=4 bgcolor="#CCCCCC"></td><td width=4 bgcolor="#CCCCCC"></td><td width=4 bgcolor="#CCCCCC"></td><td width=4 bgcolor="#CCCCCC"></td><td width=4 bgcolor="#CCCCCC"></td><td width=4 bgcolor="#CCCCCC"></td>'); 
win.document.write('</tr></table><br><span id="m_pub_wzs_progress_percent" style="font-size:10pt;vertical-align:middle;color:black;font-family:宋体">总计' + rows + '行,已导出<font id="sx" color="#cc0000"></font>行!</span></div><br /><br /><br /><script language="javascript">var osx=document.getElementById("sx");var div = document.getElementById("m_pub_wzs_progress_x");function m_pub_wzs_progress_show(pTotalCount,pCurrCount){osx.innerText = pCurrCount;var m = Math.floor(pCurrCount / pTotalCount * 30);div.style.display = "";var tr = div.firstChild.rows[0];for(var i=0;i<tr.cells.length;i++){var td=tr.cells[i]; if(i<m) td.bgColor="#000088"; else td.bgColor="#CCCCCC";}}function m_pub_wzs_progress_hide(){ var div = document.getElementById("m_pub_wzs_progress_x"); div.style.display = "none";}</script></body></html> '); 
//win.document.write("<div style='font-size:10pt;font-family:宋体'>总共" + rows + "行,已导出<font id='sx' color='#cc0000'></font>行!</div>"); 
//win.m_pub_wzs_progress_show(0,rows); 
strCols = ","+strCols+","; 
var aRowSpans = new Array(); 
for(var i=0;i<cols;i++){ 
aRowSpans[i] = 1; 
} 
var isProgressErr = false; 
for(var i = 0; i < rows; i++){ 
//btn.value = i; 
if(!isProgressErr){ 
try{ 
win.m_pub_wzs_progress_show(rows,i+1); 
} 
catch(e){ 
isProgressErr = true; 
} 
} 
var row = t.childNodes[i]; 
var xlcol =0; 
var viwCol = -1; //所在表格的位置,指显示位置,如果有行合并时,会与列索引不一致 
var colInx = -1; 
var colSpans = 1; 
for(var h = 0; h < cols; h++){ 
if(aRowSpans[h]>1){ 
xlcol++; 
aRowSpans[h]--; 
viwCol++; 
continue; 
} 
else{ 
colInx++; 
} 
var td = t.childNodes[i].childNodes[colInx]; 
if(td == null) continue; 
colSpans = td.colSpan; 
var rowSpan = td.rowSpan; 
if(isNaN(rowSpan)) rowSpan = 1; 
for(var k=0;k<td.colSpan;k++){ 
viwCol++; 
xlcol++; 
aRowSpans[viwCol] = rowSpan; 
} 
h+=td.colSpan-1; //跳过合并列 
if(td.className=="hideNode"){ 
xlcol--; 
continue; 
} 
var s = ""; 
if(td.hasChildNodes() && td.firstChild.nodeName.toLowerCase()=="input"){ 
if(td.firstChild.type.toLowerCase()=="text"){ 
s = td.firstChild.value; 
} 
else if(td.firstChild.type.toLowerCase()=="radio"){ //如果是单选框, 遍历该框所有单选框,找到选择的值 
for(var k=0;k<td.childNodes.length;k++){ 
var cn = td.childNodes[k]; 
if(cn.nodeName.toLowerCase()=="input" && cn.type.toLowerCase() == "radio" && cn.checked){ 
s = cn.value; 
break; 
} 
} 
} 
} 
else{ 
s = td.innerText; 
} 
if(strCols.indexOf("," + (xlcol-1) + ",")!=-1){ 
osheet.Cells(xlrow,xlcol).NumberFormatLocal = '@'; 
} 
if(td.rowSpan>1 || td.colSpan>1){ 
osheet.range(osheet.cells(xlrow,xlcol),osheet.cells(xlrow-1+td.rowSpan, xlcol-td.colSpan+1)).Select(); 
oXL.Selection.MergeCells = true; 
osheet.Cells(xlrow,xlcol).HorizontalAlignment = 3; 
//osheet.cells(i+td.rowSpan, xlcol-td.colSpan+1).value = s; 
osheet.Cells(xlrow,xlcol-td.colSpan+1).value = s;//m_splitLen(s,30,'\r\n'); 
}else{ 
osheet.Cells(xlrow,xlcol).value = s;//m_splitLen(s,30,'\r\n'); 
} 
} 
xlrow++; 
} 
//添加表尾 
if((sFooter == "") || (typeof(sFooter)=="undefined") || (sFooter==null)){ 
sFooter = ""; 
} 
var d = new Date(); 
var sUser = ""; 
if((window.parent != null) && (window.parent.parent != null)){ 
try{ 
sUser = window.parent.parent.bottomFrame.document.getElementById("labUser").innerText.replace("用户:","").replace(/ /g,""); 
} 
catch(ex){ 
} 
} 
var sFooterDefault = " 制表人:" + sUser + " 制表时间:" + d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds() + " "; 
osheet.Cells(xlrow, 1) = sFooterDefault + sFooter; 
osheet.Range(osheet.Cells(xlrow, 1),osheet.Cells(xlrow,cols)).Select(); //选择该列//oXL.Selection.HorizontalAlignment = 4; //居中 
oXL.Selection.MergeCells = true; 
osheet.Range(osheet.Cells(1, 1),osheet.Cells(1,1)).Select(); //选择第一个单元格列 
osheet.Columns.AutoFit(); //自动列宽 
for(var i=1;i<xlrow;i++){ 
osheet.Rows(i).RowHeight = osheet.Rows(i).RowHeight + 6; //自动大小后上下无边距,需要增加高度,要不太挤。 
} 
if(!isProgressErr){ //关闭进度条 
win.close(); 
} 
oXL.Visible = true; 
oXL.UserControl = true; 
oXL = null; 
obook = null; 
osheets = null; 
osheet = null; 
btn.style.cursor = "hand"; 
}
Javascript 相关文章推荐
javascript 模拟点击广告
Jan 02 Javascript
Javascript面向对象编程
Mar 18 Javascript
javascript中将Object转换为String函数代码 (json str)
Apr 29 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
Mar 04 Javascript
javascript 得到文件后缀名的思路及实现
May 09 Javascript
jquery删除提示框弹出是否删除对话框
Jan 07 Javascript
理解javascript异步编程
Jan 27 Javascript
每日十条JavaScript经验技巧(一)
Jun 23 Javascript
js闭包用法实例详解
Dec 13 Javascript
js实现星星打分效果
Jul 05 Javascript
js利用拖放实现添加删除
Aug 27 Javascript
TS 类型兼容教程示例详解
Sep 23 Javascript
js charAt的使用示例
Feb 18 #Javascript
jQuery 回车事件enter使用示例
Feb 18 #Javascript
js 本地预览的简单实现方法
Feb 18 #Javascript
简单js代码实现selece二级联动(推荐)
Feb 18 #Javascript
超简单JS二级、多级联动的简单实例
Feb 18 #Javascript
jquery easyui中treegrid用法的简单实例
Feb 18 #Javascript
DIV始终居中的js代码
Feb 17 #Javascript
You might like
php学习之数据类型之间的转换介绍
2011/06/09 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
2011/11/10 PHP
php错误级别的设置方法
2013/06/17 PHP
PHP操作MySQL事务实例
2014/11/05 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
jQuery ui 1.7更新小结
2009/08/15 Javascript
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
2014/03/25 Javascript
jQuery中empty()方法用法实例
2015/01/16 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
js控制TR的显示隐藏
2016/03/04 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
2016/10/26 Javascript
JavaScript实现自定义媒体播放器方法介绍
2017/01/03 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
python实现定时同步本机与北京时间的方法
2015/03/24 Python
初步介绍Python中的pydoc模块和distutils模块
2015/04/13 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
python3 发送任意文件邮件的实例
2018/01/23 Python
基于python批量处理dat文件及科学计算方法详解
2018/05/08 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
英国和爱尔兰最大的地毯零售商:Kukoon
2018/12/17 全球购物
出纳会计岗位职责
2014/03/12 职场文书
安全负责人任命书
2014/06/06 职场文书
文明上网主题班会
2015/08/14 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书
PHP使用非对称加密算法RSA
2021/04/21 PHP
在 HTML 页面中使用 React的场景分析
2022/01/18 Javascript