视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
五种JS导出Excel的方法
2020-11-27 19:59:33 责编:小采
文档

本文主要和大家介绍了JS实现导出Excel的五种方法,结合实例形式较为详细的分析了基于table表格导出Excel文件的相关操作技巧,并附源码供读者下载参考,需要的朋友可以参考下,希望能帮助到大家。

这五种方法前四种方法只支持IE浏览器,最后一个方法支持当前主流的浏览器(火狐,IE,Chrome,Opera,Safari)

<!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;base,',
 template = '<html><head><meta charset="UTF-8"></head><body><table>{table}</table></body></html>',
 base = 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 + base(format(template, ctx))
 }
 })()
 </script>
</head>
<body>
<p >
 <button type="button" onclick="method1('tableExcel')">导出Excel方法一</button>
 <button type="button" onclick="method2('tableExcel')">导出Excel方法二</button>
 <button type="button" onclick="getXlsFromTbl('tableExcel','myp')">导出Excel方法三</button>
 <button type="button" onclick="method4('tableExcel')">导出Excel方法四</button>
 <button type="button" onclick="method5('tableExcel')">导出Excel方法五</button>
</p>
<p id="myp">
<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>
</p>
</body>
</html>

今天上来发现,好多人,会遇到文件名,格式等问题。这里添加一种方法。兼容性我没有测试,大家可以试下,不过需要利用JQ直接贴代码了。源代码可点击此处本站下载。注意一定要引jquery-3.2.1.min.js,jquery.table2excel.js对应的文件。jquery-3.2.1.min.js这个看你对应的文件版本,不重要。如有问题,欢迎批评指导。

<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8">
 <title>html 表格导出道</title>
 <script src="js/vendor/jquery-3.2.1.min.js"></script>
 <script src="jquery.table2excel.js"></script>
 <script language="JavaScript" type="text/javascript">
 $(document).ready(function () {
 $("#btnExport").click(function () {
 $("#tableExcel").table2excel({
 exclude : ".noExl", //过滤位置的 css 类名
 filename : "你想说啥" + new Date().getTime() + ".xls", //文件名称
 name: "Excel Document Name.xlsx",
 exclude_img: true,
 exclude_links: true,
 exclude_inputs: true
 });
 });
 });
 </script>
</head>
<body>
<p >
 <button type="button" id="btnExport" onclick="method5('tableExcel')">导出Excel</button>
</p>
<p id="myp">
 <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>
</p>
</body>
</html>

下载本文
显示全文
专题