将table导出为EXCel

/* 外部引用此方法导出 fileName:导出的Excel的名字(不需要后缀名) */

function tableToExc(fileName){

  //获取全部table

    var tables = document.getElementsByTagName("table");

  //在document下创建临时table存储数据

  var tableExc = document.createElement("table");

  tableExc.setAttribute("border","1px");

  //页面table数量的判断

  if(tables.length==0){

      return;

  }else{

      //获取所有table

        var table1 =  tables[0];

        var table2 =  tables[1];

        var table3 =0;

        var table4 =0;

        var table5 =0;

        var table6 =0;

        //table3和table4判断

        if(tables.length==4){

            table3 =  tables[2];

            table4 =  tables[3];

        }

        //table5和table6判断

        if (tables.length==6){

          table3 =  tables[2];

              table4 =  tables[3];

              table5 =  tables[4];

              table6 =  tables[5];

          }

        //fn2:将所有table的值复制到临时table中

          tableCopy(table1,table2,table3,table4,table5,table6,tableExc);

          //将table导出

          tableToExcMethod(tableExc,fileName);

    }

}

function tableCopy(t1,t2,t3,t4,t5,t6,tableExc){

    //获取所有table的tbody

    var tbody1 = t1.tBodies[0];

    var tbody2 = t2.tBodies[0];

    var tbody3 = t3.tBodies[0];

    var tbody4 = t4.tBodies[0];

    //获取table的行数

    var tbody1RowNum = tbody1.rows.length;

    var tbody2RowNum = tbody2.rows.length;

    var tbody3RowNum = tbody3.rows.length;

    var tbody5RowNum = 0;

    if(t5){

        var tbody5 = t5.tBodies[0];

        var tbody6 = t6.tBodies[0];

        var table5CellsNum = tbody5.rows[0].cells.length;

        var table6CellsNum = tbody6.rows[0].cells.length;

        tbody5RowNum = tbody5.rows.length;

    }

    //table1和table2复制

    for(var i=0;i<tbody1RowNum;i++){

        var table1CellsNum = tbody1.rows[i].cells.length;

        var num1 = tbody2.rows.length-1;

        var table2CellsNum = tbody2.rows[num1].cells.length;

        var tr = tableExc.insertRow();

        //table1复制

        for(var k=0;k<table1CellsNum;k++){

          var s = tr.insertCell(k);

          s.colSpan = tbody1.rows[i].cells[k].colSpan;

          s.rowSpan = tbody1.rows[i].cells[k].rowSpan;

          s.innerHTML = tbody1.rows[i].cells[k].innerHTML;

        }

    }

    for(var i=0;i<tbody2RowNum;i++){

        //table2复制

        var tr = tableExc.insertRow();

        var table2CellsNum = tbody2.rows[i].cells.length;


        for(var k=table1CellsNum;k<table2CellsNum+table1CellsNum;k++){

        var s = tr.insertCell(k-1);

            s.colSpan = tbody2.rows[i].cells[k-table1CellsNum].colSpan;

            s.rowSpan = tbody2.rows[i].cells[k-table1CellsNum].rowSpan;

            if(tbody2.rows[i].cells[k-table1CellsNum].children.length){

            s.innerHTML = tbody2.rows[i].cells[k-table1CellsNum].children[0].innerHTML;

            }else{

            s.innerHTML = tbody2.rows[i].cells[k-table1CellsNum].innerHTML;

            }

          }


        }


  //table3和table4复制

    for(var i=0;i<tbody3RowNum;i++){

        var table3CellsNum = tbody3.rows[i].cells.length;

        var table4CellsNum = tbody4.rows[i].cells.length;

        var tr = tableExc.insertRow();

        //table3复制

        for(var k=0;k<table3CellsNum;k++){

          var s = tr.insertCell(k);

          s.colSpan = tbody3.rows[i].cells[k].colSpan;

          s.rowSpan = tbody3.rows[i].cells[k].rowSpan;

          s.innerHTML = tbody3.rows[i].cells[k].innerHTML;

        }

        //table4复制

        for(var k=table3CellsNum;k<table4CellsNum+table3CellsNum;k++){

            var s = tr.insertCell(k);

            s.colSpan = tbody4.rows[i].cells[k-table3CellsNum].colSpan;

            s.rowSpan = tbody4.rows[i].cells[k-table3CellsNum].rowSpan;

            s.innerHTML = tbody4.rows[i].cells[k-table3CellsNum].innerHTML;

          }

      }

      if(t5){

          //table5和table6复制

            for(var i=0;i<tbody5RowNum;i++){

                var table5CellsNum = tbody5.rows[i].cells.length;

                var table6CellsNum = tbody6.rows[i].cells.length;

                var tr = tableExc.insertRow();

                //table5复制

                for(var k=0;k<table5CellsNum;k++){

                  var s = tr.insertCell(k);

                  s.colSpan = tbody5.rows[i].cells[k].colSpan;

                  s.rowSpan = tbody5.rows[i].cells[k].rowSpan;

                  s.innerHTML = tbody5.rows[i].cells[k].innerHTML;

                }

                //table6复制

                for(var k=table5CellsNum;k<table6CellsNum+table5CellsNum;k++){

                    var s = tr.insertCell(k);

                    s.colSpan = tbody6.rows[i].cells[k-table5CellsNum].colSpan;

                    s.rowSpan = tbody6.rows[i].cells[k-table5CellsNum].rowSpan;

                    s.innerHTML = tbody6.rows[i].cells[k-table5CellsNum].innerHTML;

                  }

              }

      }

}

//table  table对象

//fileName Excel的文件名称

function tableToExcMethod(table, fileName){

        if(!fileName){

            fileName="导出文件.xls"

        }else{

        fileName = fileName+".xls";

        }

      var table_text="<table border='2px'><tr>"; 

      var textRange;

      var index=0;

      for(index = 0 ; index < table.rows.length ; index++) {   

              table_text=table_text+table.rows[index].innerHTML+"</tr>";

        }

        table_text=table_text+"</table>"; 

        table_text= table_text.replace(/<a[^>]*>|<\/a>/g, "");

        table_text= table_text.replace(/<img[^>]*>/gi,"");

        table_text= table_text.replace(/<input[^>]*>|<\/input>/gi, ""); 

        var userAgent = window.navigator.userAgent; 

        var msie = userAgent.indexOf("MSIE "); 

        if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))     

        {

          if (typeof Blob !== "undefined") {

              table_text = [table_text];

              var blob = new Blob(table_text);

              window.navigator.msSaveBlob(blob, ''+fileName);

          }

          else{

              textArea.document.open("text/html", "replace");

              textArea.document.write(table_text);

              textArea.document.close();

              textArea.focus();

              textArea.document.execCommand("SaveAs", true, fileName);

              }

            }


          else 

              var a = document.createElement('a');

              var data_type = 'data:application/vnd.ms-excel';

              var table_div = table;

              var table_html = table_div.outerHTML.replace(/ /g, '%20');

              table_html = table_html.replace(/<a[^>]*>|<\/a>/g, "");

              a.href = data_type + ', ' + table_html;

              a.download = ''+fileName;

              a.click();

    }

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容