ASP网站远程客户实现EXCEL打印功能
2018-09-06 12:52
在进行ASP网站开发时,有时需在客户端调用mssql(WINDOWS平台上强大的数据库平台)数据库的数据进行打印,若调用数据量小,可以通过在客户端运用FileSystemObject生成文件对象的方法实现打印,这里不再赘述。若需调用大量数据,可在客户端脚本中实例化RDS.DataSpace(Remote Data Service)对象,并采用远程提供程序通过ASP网站访问mssql(WINDOWS平台上强大的数据库平台)数据库(设置成只能通过RDS Default Handler或自定义商业对象才能访问数据库,可保证数据库的安全),再在客户端实例化EXCEL.APPLICATION对象,把数据集中的数据写入EXCEL中,再进行保存或打印。代码如下:
<html>
<head>
<META content=text/html; charset=gb2312 http-equiv=Content-Type>
<title>客户端电子表格打印</title>
</head>
<body bgColor=skyblue topMargin=5 leftMargin=20 oncontextmenu=return false rightMargin=0 bottomMargin=0>
<p align=center><center>
<table border=1 bgcolor=#ffe4b5 style=HEIGHT: 1px; TOP: 0px bordercolor=#0000ff>
<tr>
<td align=middle bgcolor=#ffffff bordercolor=#000080>
<font color=#000080 size=3>
客户端电子表格打印
</font>
</td>
</tr>
</table>
</p>
<form name=myform>
<DIV align=left>
<input type=button value=Excel Report name=report language=vbscript onclick=fun_excel() style=HEIGHT: 32px; WIDTH: 90px>
</p>
</form>
</body>
</html>
<script language=vbscript>
sub fun_excel()
Dim rds,rs,df
dim strCn,strSQL,StrRs
Dim xlApp, xlBook, xlSheet1
set rds = CreateObject(RDS.DataSpace)
Set df = rds.CreateObject(RDSServer.DataFactory,为WEB服务器IP地址
strcn=provider=ms remote;remote server=为WEB服务器IP地址
strsql= getalljobs
Set rs = df.Query(strCn, strSQL)
Set xlApp = CreateObject(EXCEL.APPLICATION) 注意不是:Server.CreateObject(EXCEL.APPLICATION)
Set xlBook = xlApp.Workbooks.Add
Set xlSheet1 = xlBook.Worksheets(1)
xlSheet1.cells(1,1).value =职务表
xlSheet1.cells(2,1).value = job_id
xlSheet1.cells(2,2).value = job_desc
xlSheet1.cells(2,3).value = max_lvl
xlSheet1.cells(2,4).value = min_lvl
cnt =3
do while not rs.eof
xlSheet1.cells(cnt,1).value = rs(job_id)
xlSheet1.cells(cnt,2).value = rs(job_desc)
xlSheet1.cells(cnt,3).value = rs(max_lvl)
xlSheet1.cells(cnt,4).value = rs(min_lvl)
rs.movenext
cnt = cint(cnt) + 1
loop
xlSheet1.Application.Visible = True
end sub
</script>
也可以实例化RDS DataControl,只需把以上部分代码进行修改:
set rds = CreateObject(RDS.DataSpace)
Set df = rds.CreateObject(RDSServer.DataFactory,为WEB服务器IP地址
strcn=provider=ms remote;remote server=为WEB服务器IP地址
strsql= getalljobs
Set rs = df.Query(strCn, strSQL)
修改为:
set DC = createobject(RDS.DataControl)
dc.ExecuteOptions =1 设置成同步执行,可以简化下步代码
dc.FetchOptions = 1
With dc
.Server =
.Handler = MSDFMAP.Handler
.Sql = getalljobs
.Refresh
End With
set rs= dc.Recordset
修改文件(若在WIN98,C:windowsmsdfmap.ini;若在WIN2000,D:winntmsdfmap.ini;若在WIN2000 SERVER,D:winntsmsdfmap.ini)。
[sql getalljobs]
Sql=SELECT * FROM jobs
[connect pubsDatabase]
access(小型网站之最爱)=Readonly
Connect=provider=sqloledb;data source=sql server(WINDOWS平台上强大的数据库平台);initial catalog=pubs;UID=userid;PWD=password
打开注册表HKEY_LOCAL_MACHINESYSTEMCurrentControlSet ServicesW3SVCParametersADCLaunch 若无 RDSServer.Datafactory,请添加。本例使用RDS Default Handler访问数据库,若不通过RDS Handler访问数据库,修改注册表HKEY_LOCAL_MACHINESOFTWAREMicrosoftDataFactory HandlerInfo 将HandlerRequired=1 设置成HandlerRequired =0。请注意,若不通过RDS Handler或自定义商业对象访问数据库,将对数据库带来安全隐患,所以作者极力推荐采用只能通过RDS Handler或自定义商业对象才能访问数据库的方式。