`

JS导出Exle

 
阅读更多

JS导出Exle

目的:将网页表格导出Exle表格

 

实质:用JS的ActiveXObject对象将网页对象指定内容Copy到对应的Exle表格中!

 

实用程度:将本源码Copy过去就可以用

 

唯一不足:需要对IE进行简单设置,设置路径在附件

 

源码:

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<script type="text/javascript">
	    function importExcel() {
	 		  var oXL = new ActiveXObject("Excel.Application"); 
	 		  var oWB = oXL.Workbooks.Add(); //新增工作簿
	 		  var oSheet = oWB.ActiveSheet;   //创建工作表
	 		  var sel=document.body.createTextRange();
	 		  
	 		  sel.moveToElementText(tableExcel);
	 		  sel.select();
	 		  sel.execCommand("Copy");
	 		  oSheet.Paste();
	 		 oXL.Visible = true;
			}
    </script>
  </head>
  
  <body>
  	<center>
    	<font size="5">Lo4j  imy </font><br>
	    <hr size="3"/>
		   <table id="tableExcel" width="100%" border="1" cellspacing="0" cellpadding="0"> 
		     <tr> 
		         <td colspan="5" align="center">WEB页面导出为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> 
	    <input type="submit" onclick="importExcel()" value="导出测试"/>
	    <input type="button" onclick="javascript:method1('tableExcel');" value="第一种方法导入到EXCEL"> 
		 <input type="button" onclick="javascript:method2('tableExcel');" value="第二种方法导入到EXCEL"> 
		 <input type="button" onclick="javascript:getXlsFromTbl('tableExcel',null);" value="第三种方法导入到EXCEL"> 
<script type="text/javascript">	
	function method1(tableid) {//整个表格拷贝到EXCEL中 
	    var curTbl = document.getElementById(tableid); 
	    var oXL = new ActiveXObject("Excel.Application"); 
	    //创建AX对象excel 
	    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可见属性 
	} 
	function method2(tableid){  //读取表格中每个单元到EXCEL中 
	
	    var curTbl = document.getElementById(tableid); 
	    var oXL = new ActiveXObject("Excel.Application"); 
	    //创建AX对象excel 
	    var oWB = oXL.Workbooks.Add(); 
	    //获取workbook对象 
	   var oSheet = oWB.ActiveSheet; 
	   //激活当前sheet 
	    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; 
	    //设置excel可见属性 
	} 
	function getXlsFromTbl(inTblId, inWindow) { 
	    try { 
	        var allStr = ""; 
	        var curStr = ""; 
	        //alert("getXlsFromTbl"); 
	        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; 
	    //alert("getTblData is " + inWindow); 
	    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++) { 
	            //alert("j is " + j); 
	            for (var i = 0; i < curTbl.rows[j].cells.length; i++) { 
	                //alert("i is " + 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 += "\r\n"; 
	        } 
	    } 
	    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 = "leo_zhang" + "_" + curYear + curMonth + curDate + "_" 
	            + curHour + curMinute + curSecond + ".csv"; 
	    //alert(fileName); 
	    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(); 
	} 
	</script>    
    </center>
   
  </body>
</html>

 

转自:忘记了

 IE选项设置,设置路径附件下载地址:

 

  • 大小: 129.6 KB
分享到:
评论

相关推荐

    js导出excel插件

    总结,使用JavaScript导出Excel插件,你需要选择合适的库,配置到你的项目中,根据业务需求编写导出逻辑,处理好兼容性和性能问题。在实现过程中,务必注意代码的可维护性和用户友好性,确保导出功能的稳定性和高效...

    js导出excel,可设置excel属性

    js导出excel,可设置excel属性

    js导出Excel和Word,不支持ie

    - 使用JavaScript导出Excel通常依赖于一些库,如` SheetJS`(XLSX.js)或`js-xlsx`。这些库可以解析和生成逗号分隔值(CSV)或二进制格式的Excel文件(XLSX)。在`exportexcel.html`文件中,可能包含了使用这类库...

    HTML用JS导出Excel的五种方法.javascript导出excel的5种方法

    导出Excel文件时,需要创建一个工作表对象,然后加入到工作簿中,最后将其转换为二进制数据并下载。 ```javascript // 安装js-xlsx npm install xlsx import * as XLSX from 'xlsx'; function exportToExcel(data...

    js导出excel.zip

    在JavaScript编程领域,导出Excel是一项常见的需求,特别是在Web应用中,用户可能需要将数据显示在Excel表格中以便进一步处理或存储。"js导出excel.zip"这个压缩包提供了一个解决方案,它结合了EasyUI和DataGrid组件...

    js导出excel(xlsx格式)、CVS、PDF、打印

    Javascript导出excel为xlsx格式,兼容IE6+和主流浏览器,下载下来直接可以使用。 其他javascript导出excel插件可看作者文章:https://blog.csdn.net/qq_21693027/article/details/80459677

    elementuiplus+vue3+sheetjs导出excel不需要filesave依赖

    elementui+vue3+sheetjs导出excel不需要filesave依赖 安装依赖 pnm install xlsx

    js导出Excel 、Word [超实用][自动保存样式]

    总结一下,JavaScript导出Excel和Word的关键步骤包括: 1. 获取Table数据和样式信息。 2. 将数据转化为适合Excel或Word的格式。 3. 使用库(如SheetJS、docx)生成相应格式的文件。 4. 创建下载链接或通过服务器完成...

    Export2Excel.js导出excel

    "Export2Excel.js导出excel"是一个针对这种情况的解决方案,它允许在Vue项目中实现前端直接导出Excel文件。下面将详细阐述这个功能的实现原理和涉及的技术。 首先,"Blob.js"是用于处理浏览器中的Blob对象的...

    Javascript导出Excel,自动合并单元格、自动列宽、有进度条

    js导出execl,自动合并单元格,自动增行,增列

    js导出excel 支持各主流浏览器

    js导出excel 支持各主流浏览器,支持指定文件名

    纯JavaScript导出Excel

    "纯JavaScript导出Excel"的功能正是解决这个问题的一种方法,它允许开发者在不依赖任何后端服务或第三方库的情况下,直接在浏览器端将JSON格式的数据转换为可下载的Excel文件。这种技术对于那些对服务器交互有限制...

    js导出excel 示例

    js导出excel 的例子, 可以把网页的表格直接导出成excel

    js导出excel的例子

    总结来说,JavaScript导出Excel的核心在于将HTML表格数据转换为CSV格式,并利用浏览器的下载功能生成文件。对于更复杂的需求,可以考虑使用专门的JavaScript库来增强功能。在实际应用中,应根据项目需求选择最合适的...

    js导出excel支持各种浏览器

    js导出excel支持各种浏览器,本人亲测,支持IE 火狐 chrome 360 等多种常用浏览器

    js导出Excel三种方法

    js导出Excel三种方法 //整个表格拷贝到EXCEL中 //读取表格中每个单元到EXCEL中

    vue.js导出Excel所需要的JS文件

    "vue.js导出Excel所需要的JS文件"这个主题就涉及到了两个关键文件:Blob.js和Export2Excel.js。下面我们将详细探讨这两个文件以及它们在Vue.js中实现Excel导出的过程。 首先,Blob.js是用于处理二进制大型对象...

    js导出excel.rar

    总结来说,"js导出excel.rar"提供了一个纯JavaScript实现的Excel导出方案,利用`SheetJS`这样的库,可以在前端直接将数据转换为Excel格式供用户下载,无需服务器参与。对于那些需要在网页上处理数据并导出到Excel的...

    JS导出Excel

    在JavaScript中,导出Excel是一项...以上就是关于使用JavaScript导出Excel,包括自动合并单元格、自动调整列宽以及从HTML表格获取数据的一些关键技术点。实际开发中,还需要结合项目需求和具体库的文档进行细致的实现。

Global site tag (gtag.js) - Google Analytics