2010/09/03

将Web内容导出为Excel的两种方法

将页面显示的内容在不提示用户保存文件的情况下, 直接导出到Excel:

以下内容放在<head></head>之间
<!-- START 导出表格到EXCEL -->
<object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">
</object>
<script language="javascript">
<!--
function AutomateExcel()
{
var elTable = document.getElementById("outtable");  //outtable 为导出数据所在的表格ID;
var oRangeRef = document.body.createTextRange(); 
oRangeRef.moveToElementText( elTable ); 
oRangeRef.execCommand( "Copy" ); 
var appExcel = new ActiveXObject( "Excel.Application" ); 
appExcel.Visible = true; 
appExcel.Workbooks.Add().Worksheets.Item(1).Paste(); 
appExcel = null;
}
//-->
</script>
<!-- END 导出表格到EXCEL -->

给要导出的表格加ID, 要与Javascript里一致
<table border="0" id="outtable">

在合适的位置放置"导出"按钮
<input type="button" name="out_excel" onclick="AutomateExcel();" value="导出到excel">

将数据库记录用ASP读出, 并将其以文本方式(Tab分隔)保存为.xls文件, 提示用户下载后打开:

ASP代码
sql = "你的SQL查询语句"
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open sql,conn,1,1

Set fs = server.CreateObject("scripting.filesystemobject")

'设置文件名及存放位置, 此处设置为保存在虚拟根目录
filename="文件的名称.xls"
temp=filename
filename=Request.ServerVariables("APPL_PHYSICAL_PATH")&"\"+filename

如果文件已存在, 删除它 
if fs.FileExists(filename) then
 fs.DeleteFile(filename)
end if

'创建文件 
set myfile = fs.CreateTextFile(filename,true)
dim strLine

strLine="Excel中的表头"
myfile.writeline strLine

strLine=""
'将表的列名读出, 并写入EXCEL. 列名可以在sql语句中用"as xxx"设置, 或省略.
For each x in rs.fields
 strLine= strLine & x.name & chr(9)
Next
myfile.writeline strLine

'将表的数据写入EXCEL 
while not rs.eof
 strLine=""
 for each x in rs.Fields
  strLine= strLine & Trim(x.value) & chr(9)
  'Excel默认会把"0001"写为"1", 可以用下面的方法, 把相应的列加上&"=""" &和& """" &在列内容首尾, 以文本方式导出.
  'item中的数字表示列号, 从0开始算起
  'strLine= strLine & rs.Fields.item(0).value & chr(9) &"=""" & rs.Fields.item(1).value & """" & chr(9)
  '下面的方法为将每列都以文本方式导出
  'strline= strline & "="""&x.value &""""& chr(9)
 next
 myfile.writeline strLine 

 rs.movenext 
wend

'显示链接
link="<A HREF=""/temp" & temp & """>请点击下载excel文件</a>"
Response.write link
set myfile = nothing 
Set fs=Nothing 

注: 大部分内容来自互联网, 有本人整理编辑

没有评论: