将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

        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

          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

        //table2复制

        var tr = tableExc.insertRow();

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


        for(var k=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

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

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

        var tr = tableExc.insertRow();

        //table3复制

        for(var k=0;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

            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

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

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

                var tr = tableExc.insertRow();

                //table5复制

                for(var k=0;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

                    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="

"; 

      var textRange;

      var index=0;

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

              table_text=table_text+table.rows[index].innerHTML+"

";

        }

        table_text=table_text+"

"; 

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

        table_text= table_text.replace(/]*>/gi,"");

        table_text= table_text.replace(/]*>|<\/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>/g, "");

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

              a.download = ''+fileName;

              a.click();

    }

你可能感兴趣的:(将table导出为EXCel)