之前的js导出table数据到excel 的文章还有个问题,就是导出的excel会带有文本框的情况。所以再做一个优化。思路就是把文本框的值找出来,然后替换整个文本框,再进行打印。打印完毕后,把原来的文本框加回去,显示回原来页面。
代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
<script src=jquery.js></script>
<script language="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 ExcelTo()
{
//原来的table
var str=$('#div1').html();
//替换table的input
var str2=str;
var id;
//var a=$('#TextBox2')[0].outerHTML;
//alert(a);
$("#div1 :input").each(function(){
//alert($(this).val()+$(this).html());
id=(this).id;
id='#'+id;
str2=str2.replace($(id)[0].outerHTML,$(this).val());
});
//alert(str2);
str2=str2.replace('tableExcel','tableExcel2');
$('#div1').empty();
$('#div1').append(str2);
method1('tableExcel2');
$('#div1').empty();
$('#div1').append(str);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div id='div1'>
<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
<asp:TextBox ID="TextBox1" runat="server">的人仍然</asp:TextBox>
</td>
<td>
bbb <asp:TextBox ID="TextBox2" runat="server">125dtt</asp:TextBox>
</td>
<td>
ccc <asp:TextBox ID="TextBox3" runat="server">2ur</asp:TextBox>
</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>
<input type="button" οnclick="javascript:method1('tableExcel2');" value="第一种方法导入到EXCEL">
<input type="button" οnclick="javascript:ExcelTo('div1');" value="第2种方法导入到EXCEL">
</form>
</body>
</html>