js到处excel

//导出到Excel,注意,表格标记内不得有注释,因为childNodes会把注释也算进去
//如果出错,需要关闭Excel,否则Excel进程会一直运行着
function ExportExcel(btn,TabId,strCols,sTitle,sHeader,sFooter){
    btn.style.cursor = "wait";
    event.returnValue = false;   
    //try{   
    var tab = document.getElementById("DataGrid1");
    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++;
        }
    }
    /////////////////////////////创建excel文档
    try{
        var oXL = new ActiveXObject("Excel.Application");
    }catch(e){
        alert("请确认已经安装了Excel并允许运行Excel!");
        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(mkProcessTxt(sTitle,rows));
    //win.document.write("<div style='font-size:10pt;font-family:宋体'>总共" + rows + "行,已导出<font id='sx' color='#cc0000'></font>行!</div>");
    //win.m_pub_wzs_progress_show(rows,0);
    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";
}
function m_selTxt(pSelId){
    var pSel = document.getElementById(pSelId);
    if(pSel.selectedIndex == -1) return "";
    return pSel.options[pSel.selectedIndex].text;
}
function m_selVal(pSelId){
    var pSel = document.getElementById(pSelId);
    if(pSel.selectedIndex == -1) return "";
    return pSel.options[pSel.selectedIndex].value;
}
function mkProcessTxt(sTitle,rows){
    var s = '<html><title>' + sTitle + '导出Excel</title><body bgColor=white><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;"><tr height=17>';
    var ss = new Array(30);
    for(var i=0;i<30;i++){
        ss[i] = '<td width=4 bgcolor="#000088"></td>';
    }
    s += ss.join("");
    s += '</tr></table><br><span id="m_pub_wzs_progress_percent" style="font-size:10pt;vertical-align:middle;color:black;font-family:宋体"&gt;总计' + 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>'
    return s;
}


基于数据挖掘的音乐推荐系统设计与实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐与其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐与其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值