Home  >  Article  >  Web Front-end  >  How to import web table content into excel_javascript skills

How to import web table content into excel_javascript skills

WBOY
WBOYOriginal
2016-05-16 16:59:431567browse

Add the visited page to the trusted site

Copy the code The code is as follows:

//Export to Excel, note that there must be no comments in the table mark, because the childNodes will also count the comments
//If an error occurs, you need to close Excel, otherwise the Excel process will keep running
//There can only be one input value in td
//There cannot be a structure in non-td, otherwise a missing ";" error will be reported
//Add
//Add button
//Set the id and class of the table table to 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("Missing table object");
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;ivar 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(" Please confirm that Excel has been installed and allowed to run Excel!");
alert("Excel cannot be started, please ensure that Excel has been installed on the computer!nn If Excel has been installed," "Please add the IP address to the trusted site, And adjust the security level of IE trusted sites. \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('' + sTitle + '导出Excel


');

//win.document.write("
总共" rows "行,已导出行!
");
//win.m_pub_wzs_progress_show(0,rows);
strCols = "," strCols ",";
var aRowSpans = new Array();
for(var i=0;iaRowSpans[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;kviwCol ;
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;kvar 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,'rn');
}else{
osheet.Cells(xlrow,xlcol).value = s;//m_splitLen(s,30,'rn');
}
}
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;iosheet.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";
}
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn