html
<!DOCTYPE html><html> <head lang="en"> <meta charset="UTF-8" /> <title>html 表格匯出道</title> <script language="JavaScript" type="text/javascript"> //第一種方法 function method1(tableid) { var curTbl = document.getElementById(tableid); var oXL = new ActiveXObject("Excel.Application"); var oWB = oXL.Workbooks.Add(); var oSheet = oWB.ActiveSheet; var sel = document.body.createTextRange(); sel.moveToElementText(curTbl); sel.select(); sel.execCommand("Copy"); oSheet.Paste(); oXL.Visible = true; } //第二種方法 function method2(tableid) { var curTbl = document.getElementById(tableid); var oXL = new ActiveXObject("Excel.Application"); var oWB = oXL.Workbooks.Add(); var oSheet = oWB.ActiveSheet; var Lenr = curTbl.rows.length; for (i = 0; i < Lenr; i++) { var Lenc = curTbl.rows(i).cells.length; for (j = 0; j < Lenc; j++) { oSheet.Cells(i + 1, j + 1).value = curTbl .rows(i) .cells(j).innerText; } } oXL.Visible = true; } //第三種方法 function getXlsFromTbl(inTblId, inWindow) { try { var allStr = ""; var curStr = ""; if (inTblId != null && inTblId != "" && inTblId != "null") { curStr = getTblData(inTblId, inWindow); } if (curStr != null) { allStr += curStr; } else { alert("你要匯出的表不存在"); return; } var fileName = getExcelFileName(); doFileExport(fileName, allStr); } catch (e) { alert("匯出發生異常:" + e.name + "->" + e.description + "!"); } }
function getTblData(inTbl, inWindow) { var rows = 0; var tblDocument = document; if (!!inWindow && inWindow != "") { if (!document.all(inWindow)) { return null; } else { tblDocument = eval(inWindow).document; } }
var curTbl = tblDocument.getElementById(inTbl); var outStr = ""; if (curTbl != null) { for (var j = 0; j < curTbl.rows.length; j++) { for (var i = 0; i < curTbl.rows[j].cells.length; i++) { if (i == 0 && rows > 0) { outStr += " t"; rows -= 1; }
outStr += curTbl.rows[j].cells[i].innerText + "t"; if (curTbl.rows[j].cells[i].colSpan > 1) { for (var k = 0; k < curTbl.rows[j].cells[i].colSpan - 1; k++) { outStr += " t"; } } if (i == 0) { if (rows == 0 && curTbl.rows[j].cells[i].rowSpan > 1) { rows = curTbl.rows[j].cells[i].rowSpan - 1; } } } outStr += "rn"; } } else { outStr = null; alert(inTbl + "不存在 !"); } return outStr; }
function getExcelFileName() { var d = new Date(); var curYear = d.getYear(); var curMonth = "" + (d.getMonth() + 1); var curDate = "" + d.getDate(); var curHour = "" + d.getHours(); var curMinute = "" + d.getMinutes(); var curSecond = "" + d.getSeconds(); if (curMonth.length == 1) { curMonth = "0" + curMonth; }
if (curDate.length == 1) { curDate = "0" + curDate; }
if (curHour.length == 1) { curHour = "0" + curHour; }
if (curMinute.length == 1) { curMinute = "0" + curMinute; }
if (curSecond.length == 1) { curSecond = "0" + curSecond; } var fileName = "table" + "_" + curYear + curMonth + curDate + "_" + curHour + curMinute + curSecond + ".csv"; return fileName; }
function doFileExport(inName, inStr) { var xlsWin = null; if (!!document.all("glbHideFrm")) { xlsWin = glbHideFrm; } else { var width = 6; var height = 4; var openPara = "left=" + (window.screen.width / 2 - width / 2) + ",top=" + (window.screen.height / 2 - height / 2) + ",scrollbars=no,width=" + width + ",height=" + height; xlsWin = window.open("", "_blank", openPara); } xlsWin.document.write(inStr); xlsWin.document.close(); xlsWin.document.execCommand("Saveas", true, inName); xlsWin.close(); }
//第四種 function method4(tableid) { var curTbl = document.getElementById(tableid); var oXL; try { oXL = new ActiveXObject("Excel.Application"); //建立AX物件excel } catch (e) { alert( "無法啟動Excel!\n\n如果您確信您的電腦中已經安裝了Excel," + "那麼請調整IE的安全級別。\n\n具體操作:\n\n" + "工具 → Internet選項 → 安全 → 自定義級別 → 對沒有標記為安全的ActiveX進行初始化和指令碼執行 → 啟用" ); return false; } var oWB = oXL.Workbooks.Add(); //獲取workbook物件 var oSheet = oWB.ActiveSheet; //啟用當前sheet var sel = document.body.createTextRange(); sel.moveToElementText(curTbl); //把表格中的內容移到TextRange中 sel.select(); //全選TextRange中內容 sel.execCommand("Copy"); //複製TextRange中內容 oSheet.Paste(); //貼上到活動的EXCEL中 oXL.Visible = true; //設定excel可見屬性 var fname = oXL.Application.GetSaveAsFilename( "將table匯出到excel.xls", "Excel Spreadsheets (*.xls), *.xls" ); oWB.SaveAs(fname); oWB.Close(); oXL.Quit(); }
//第五種方法 var idTmr; function getExplorer() { var explorer = window.navigator.userAgent; //ie if (explorer.indexOf("MSIE") >= 0) { return "ie"; } //firefox else if (explorer.indexOf("Firefox") >= 0) { return "Firefox"; } //Chrome else if (explorer.indexOf("Chrome") >= 0) { return "Chrome"; } //Opera else if (explorer.indexOf("Opera") >= 0) { return "Opera"; } //Safari else if (explorer.indexOf("Safari") >= 0) { return "Safari"; } } function method5(tableid) { if (getExplorer() == "ie") { var curTbl = document.getElementById(tableid); var oXL = new ActiveXObject("Excel.Application"); var oWB = oXL.Workbooks.Add(); var xlsheet = oWB.Worksheets(1); var sel = document.body.createTextRange(); sel.moveToElementText(curTbl); sel.select(); sel.execCommand("Copy"); xlsheet.Paste(); oXL.Visible = true;
try { var fname = oXL.Application.GetSaveAsFilename( "Excel.xls", "Excel Spreadsheets (*.xls), *.xls" ); } catch (e) { print("Nested catch caught " + e); } finally { oWB.SaveAs(fname); oWB.Close((savechanges = false)); oXL.Quit(); oXL = null; idTmr = window.setInterval("Cleanup();", 1); } } else { tableToExcel(tableid); } } function Cleanup() { window.clearInterval(idTmr); CollectGarbage(); } var tableToExcel = (function() { var uri = "data:application/vnd.ms-excel;base64,", template = '<html><head><meta charset="UTF-8"></head><body><table>{table}</table></body></html>', base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))); }, format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }); }; return function(table, name) { if (!table.nodeType) table = document.getElementById(table); var ctx = { worksheet: name || "Worksheet", table: table.innerHTML }; window.location.href = uri + base64(format(template, ctx)); }; })(); </script> </head> <body> <div> <button type="button" onclick="method1('tableExcel')"> 匯出Excel方法一 </button> <button type="button" onclick="method2('tableExcel')"> 匯出Excel方法二 </button> <button type="button" onclick="getXlsFromTbl('tableExcel','myDiv')"> 匯出Excel方法三 </button> <button type="button" onclick="method4('tableExcel')"> 匯出Excel方法四 </button> <button type="button" onclick="method5('tableExcel')"> 匯出Excel方法五 </button> </div> <div id="myDiv"> <table id="tableExcel" width="100%" border="1" cellspacing="0" cellpadding="0" > <tr> <td colspan="5" align="center">html 表格匯出道Excel</td> </tr> <tr> <td>列標題1</td> <td>列標題2</td> <td>類標題3</td> <td>列標題4</td> <td>列標題5</td> </tr> <tr> <td>aaa</td> <td>bbb</td> <td>ccc</td> <td>ddd</td> <td>eee</td> </tr> <tr> <td>AAA</td> <td>BBB</td> <td>CCC</td> <td>DDD</td> <td>EEE</td> </tr> <tr> <td>FFF</td> <td>GGG</td> <td>HHH</td> <td>III</td> <td>JJJ</td> </tr> </table> </div> </body></html>
複製程式碼