ASP网站远程客户实现EXCEL打印功能

2018-09-06 12:52

阅读:679

  在进行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或自定义商业对象才能访问数据库的方式。


评论


亲,登录后才可以留言!