`
谷超
  • 浏览: 163826 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

导表格内容到excel或导出页面指定内容到excel中,利用JSP打印表格内容或打印指定区域中的内容

阅读更多

最近写些代码,实现把table中的数据导出到excel中,并能够打印table的内容,代码很简单,但觉得很有用,粘出来和大家分享!其中可以选择table中的行进行导出或打印,自己认为还是不错的!

 

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<script language="javascript">
	function exp(){
		try
		{
			var oXL = new ActiveXObject("Excel.Application");
			// Get a new workbook.
			var flag = false;
			var oWB = oXL.Workbooks.Add();
			var oSheet = oWB.ActiveSheet;
			var table = document.getElementsByTagName("table")[0];
			var hang = table.rows.length;//行
			var lie = table.rows(0).cells.length;//列
			var k = 1;
	
			//导出表格头
			for(var i=0;i<lie;i++) {
	          oSheet.Cells(k,i+1).numberformatlocal="@";
	          oSheet.Cells(k,i+1).Font.size="9";
			  oSheet.Cells(k,i+1).value = table.rows(0).cells(i).innerText;
			}
			//导出被选中的表格内容
			for (i=1;i<hang;i++){
				for (j=0;j<lie;j++){
					if(j == 0){
						if (table.rows(i).cells(j).children){
							if (table.rows(i).cells(j).children(0)){
								if (table.rows(i).cells(j).children(0).tagName == "INPUT" && table.rows(i).cells(j).children(0).type == "checkbox"){
									if (!table.rows(i).cells(j).children(0).checked){
										flag = false;
									}else{
										flag = true;
										k = k+1;
										oSheet.Cells(k,1).numberformatlocal="@";
        								oSheet.Cells(k,1).Font.size="9";
										oSheet.Cells(k,1).value = i;
									} 
								}
							}
						}
					}else{
						if(flag){
							 oSheet.Cells(k,j+1).numberformatlocal="@";
                             oSheet.Cells(k,j+1).Font.size="9";
						     oSheet.Cells(k,j+1).value = table.rows(i).cells(j).innerText;
						}
					} 
				}
			}			
		
			//设置自动调整列宽
	    oSheet.Columns.AutoFit;
	    
			oXL.Visible = true;
			oXL.UserControl = true;
	    oXL = null;
	    oWB = null;
	    oSheet = null;
	    }catch(e){
	    	alert("如果您没有中断导出过程,请确定您已经安装了Excel;\n并且在导出时,IE的安全级别设置为最低,请点击【帮助】了解浏览器设置方法!");
	    }
	}
	
	function pnt(){
		var printObjName = document.getElementsByTagName("table")[0].getAttribute("id");
		//alert(printObjName)
		var url="/gcprint.jsp?tableName="+printObjName;
	  window.open(url,'','toolbar=yes,menubar=yes,resizable=yes,scrollbars=yes,status=yes');
	}
	
</script>
</head>

<body>
<form action="" method="post">
<input name="button" type="button" value="导出到excel" onClick="exp()">&nbsp;
<input name="button1" type="button" value="显示打印" onClick="pnt()">
<table id="tbid" width="1039" border="1">
  <tr>
    <td width="55">标记</td>
    <td width="127">销售单号</td>
    <td width="134">纳税人识别号</td>
    <td width="189">客户名称</td>
    <td width="249">机器编号</td>
    </tr>
  <tr>
    <td><input name="checkbox" type="checkbox" value="checkbox1">1</td>
    <td>xs09080300004</td>
    <td>110102101432267</td>
    <td>北京中商百年冷气工程安装中心</td>
    <td>0000021510000011</td>
    </tr>
  <tr>
    <td><input name="checkbox" type="checkbox" value="checkbox2">2</td>
    <td>xs09080300005</td>
    <td>aaaaa</td>
    <td>nnnnnn</td>
    <td>0000021510000012</td>
    </tr>
  <tr>
    <td><input name="checkbox" type="checkbox" value="checkbox3">3</td>
    <td>xs09080300006</td>
    <td>bbbbb</td>
    <td>lllll</td>
    <td>0000021510000012</td>
  </tr>
</table>

</form>
</body>
</html>

上面的代码是导出table中的内容到excel,当然也可以导出页面中的指定内容到excel中,导出过程是这样的:得到页面指定区域的html内容,把内容拷贝到剪切板中,再创建excel,把剪切板的内容粘贴到工作簿中,代码段如下:

var content = window.document.all('ooo').outerHTML;

window.clipboardData.setData("Text",content);

var ExApp = new ActiveXObject("Excel.Application");
var ExWBk = ExApp.workbooks.add();

ExWBk.worksheets(1).Paste;

很方便吧,哦也是这么想的!

有一个问题不是很确定,就是拷贝到剪切板的内容,能够拷贝到什么文件中,上面是拷贝到了excel中,是不是能够粘贴到其他的文档之中呢?以后再摸索了!

 

 

下面的代码是打印被选中的table中的信息,当然也可以打印页面中的指定位置,比如有<div id="printArea">ddd</div>,也可以打印,只是代码稍做变化,下面的init方法中,

var name = '<%=request.getParameter("tableName")%>';
var obj = eval('window.opener.'+tableName);

printArea.innerHTML =  obj.outerHTML;

总之打印的过程是点击打印按钮,弹出一个新的页面,页面中显示要打印的内容,依赖IE进行打印即可

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>
<META http-equiv="Content-Type" content="text/html; charset=GBK">
<TITLE>打印</TITLE>
<style type="text/css">
<!--
.large {
	FONT-SIZE: 16px;
	FONT-FAMILY: 黑体;
	FONT-WEIGHT: normal;
}

.noPrint {
	display: none
}

IMG {
	display: none
}

INPUT {
	display: none
}

TABLE {
	border-collapse: collapse;
}

TD {
	border: solid windowtext 1px;
	FONT-SIZE: 9pt;
}

A {
	cursor: default;
}

A:link {
	COLOR: black;
	TEXT-DECORATION: none
	disabled:true
}

A:visited {
	COLOR: black;
	TEXT-DECORATION: none
}

A:hover {
	COLOR: black;
	TEXT-DECORATION: none
}
.resizeLine{
	background-color: black;
}
TR.TrLight {
	BACKGROUND-COLOR: white
}

TR.TrDark {
	BACKGROUND-COLOR:white
}

TD.TdDark {
	BACKGROUND-COLOR: white
}

TD.TdLight {
	BACKGROUND-COLOR: white
}

-->
</style>
<script>
function init(){
	var tableName = '<%=request.getParameter("tableName")%>';
	var tableObj = eval('window.opener.'+tableName);//得到父窗口中tableName的element元素,等价于window.opener.document.getElementById(tableName)
	var hang = tableObj.rows.length;//行
	var mid = "";
	for(i=1;i<hang;i++){
		if (tableObj.rows(i).cells(0).children(0).tagName == "INPUT" && tableObj.rows(i).cells(0).children(0).type == "checkbox"){
			if (tableObj.rows(i).cells(0).children(0).checked){
					mid += 	tableObj.rows(i).outerHTML;
			}
		}
	
	}
	var total = "<table>"+mid+"</table>"
	printArea.innerHTML = total;
}
</script>
</HEAD>


<body onload="init()">

<form id='printArea' >

</form>

</body>
</HTML>
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics