*/ 出自: 编程中国 http://www.bc-cn.net
*/ 作者: ouyangfeixue
*/ 时间: 2007-9-18 编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------
其实这个也是老生常谈的一个问题,但是还是有人在问,可见这个问题的答案并没有很好的解决大家的问题。现在我就把这个问题的答案跟大家说一下,本人也是经过测试才得到正确结果的。如果有不明白的地方可以跟我交流。我很喜欢和各位共同交流,共同进步的。QQ:308046190
首先是一个excel.js文件。把下面内容保存为excel.js文件
var idTmr = "";
function copy(tabid)
{
var oControlRange = document.body.createControlRange();
oControlRange.add(tabid,0);
oControlRange.select();
document.execCommand("Copy");
}
function toExcel(tabid){
copy(tabid);
try
{
var xls = new ActiveXObject( "Excel.Application" );
}
catch(e)
{
alert( "Excel没有安装或浏览器设置不正确.请启用所有Active控件和插件");
return false;
}
xls.visible = true;
var xlBook = xls.Workbooks.Add;
var xlsheet = xlBook.Worksheets(1);
xlBook.Worksheets(1).Activate;
for(var i=0;i<tabid.rows(0).cells.length;i++){
xlsheet.Columns(i+1).ColumnWidth=15;
}
xlsheet.Paste;
xls=null;
idTmr = window.setInterval("Cleanup();",1);
}
function Cleanup() {
window.clearInterval(idTmr);
CollectGarbage();
}
然后是数据导入和导出。把下面内容保存为“数据导入和导出.asp”
<script language="JavaScript" src="excel.js"></script>
<%
set conn=server.createo b j e c t("ADODB.Connection")
on error resume next
connstr="driver={SQL Server};server=XDZ;uid=sa;pwd=fjkj;database=pubs" ==数据库连接文件,我用的是SQL
conn.open connstr
If Err Then
err.Clear
Set Conn = Nothing
Response.Write "数据库连接出错,请检查连接字串。"
Response.End
End If
%>
<%
dim aa,action,StrConnect,objConn,rs,Sql
action=Request.QueryString("action")
if action="excel" then
aa=request.form("bbb") '获取传递过来的值
'Excel连接驱动
aaa="provider=Microsoft.Jet.OLEDB.4.0; Data Source='"&aa&"';Extended Properties=Excel 8.0"
set StrConnect=CreateObject("ADODB.Connection")
StrConnect.Open aaa
Set objConn=CreateObject("ADODB.Connection")
objConn.Open StrConnect
'注意 表名一定要以下边这种格试 "[表名$]" 书写
Set rs = Server.CreateObject("ADODB.Recordset")
Sql="select * from [sheet1$] "
rs.Open Sql,StrConnect,2,2
IF rs.Eof And Rs.Bof Then
response.Write("<script>alert('没有资料可以导入!');history.go(-1);</script>")
else
'列出表内信息
response.write"excel数据为: <br>"
do while not rs.eof
response.write ""&rs(0)&" "&rs(1)&" "&rs(2)&" "&rs(3)&""
response.write"<br>"
set rssql=server.CreateObject("adodb.recordset")
'插入SQL2000里
rssql.Open "select * from jobs",conn,1,3
rssql.AddNew
if rs(0)<>"" then
rssql(0)=rs(0)
end if
if rs(1)<>"" then
rssql(1)=rs(1)
end if
if rs(2)<>"" then
rssql(2)=rs(2)
end if
if rs(3)<>"" then
rssql(3)=rs(3)
end if
rssql.Update
Rs.MoveNext
loop
end if
response.Write "<script language=javascript>alert('资料导入成功!');history.go(-1);</script>"
end if
%>
<title>========数据导入与导出========</title>
<table width="80%" border="1" align="center" style="border:#444444 1px solid;">
<tr>
<td align="center"><font color="#9966FF"><strong>========数据导入与导出========</strong></font></td>
</tr>
</table><br>
<table width="80%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="42%" rowspan="2" valign="top"> <form action="数据导入和导出.asp?action=excel" name="form1" id="form1" method="post">
<input name="bbb" type="file" id="bbb" size="30">
<P></P>
<input type="submit" name="submit" value="数据导入">
</form></td>
<td width="50%" valign="top">
<table width="100%" border="1" align="left" cellpadding="0" cellspacing="0" id="data">
<tr align="center" bgcolor="#444444">
<td><font color="#FFFFFF">编号</font></td>
<td><font color="#FFFFFF">名称</font></td>
<td><font color="#FFFFFF">最小值</font></td>
<td><font color="#FFFFFF">最大值</font></td>
</tr>
<%
str="select * from jobs "
set res=Server.CreateObject("ADODB.Recordset")
res.open str,conn,1,1
if not res.eof then
do while not res.eof
%>
<tr align="center">
<td><%=res("job_id")%></td>
<td><%=res("job_desc")%></td>
<td><%=res("min_lvl")%></td>
<td><%=res("max_lvl")%></td>
</tr>
<%
res.movenext
loop
res.close
set res=nothing
end if
%>
</table> </td>
</tr>
<tr>
<td align="center" valign="bottom"><a href="#" onClick="javascript:toExcel(data);">[<img src="images/excel.gif" width="20" height="20" border="0">
数据导出]</a></td>
</tr>
</table>