最近写些代码,实现把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()">
<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 οnlοad="init()"> <form id='printArea' > </form> </body> </HTML>