⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asp网站远程客户实现excel打印功能 .htm

📁 较为详细的介绍了asp自定义的各种函数,方便asp的各种开发.
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0055)http://www.51base.com/article/view_article.asp?id=25452 -->
<HTML lang=zh-cn><HEAD><TITLE>NB联盟</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type><LINK 
href="NB联盟10.files/style.css" rel=stylesheet>
<META content="MSHTML 5.00.2614.3500" name=GENERATOR></HEAD>
<BODY><!-- start page body -->
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 class=td id=position 
width=773>
  <TBODY>
  <TR>
    <TD class=shadow colSpan=2 height=20 width=262>&nbsp;&nbsp;<A 
      href="http://www.51base.com/"><IMG border=0 
      src="NB联盟10.files/logo1.gif"></A> </TD>
    <TD align=right width=505>
      <P align=left></P></TD></TR></TBODY></TABLE>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 id=main width=770>
  <TBODY>
  <TR>
    <TD class=tdlbr vAlign=top>
      <TABLE align=center border=0 cellPadding=0 cellSpacing=0 id=welcome 
      style="TABLE-LAYOUT: fixed" width="98%">
        <TBODY>
        <TR>
          <TD style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" 
            vAlign=top><FONT color=red><B>文章标题</B></FONT><FONT color=red><B>: 
            ASP网站远程客户实现EXCEL打印功能 </B></FONT>
            <HR noShade SIZE=1>
            在进行ASP网站开发时,有时需在客户端调用MSSQL数据库的数据进行打印,若调用数据量小,可以通过在客户端运用FileSystemObject生成文件对象的方法实现打印,这里不再赘述。若需调用大量数据,可在客户端脚本中实例化RDS.DataSpace(Remote 
            Data Service)对象,并采用远程提供程序通过ASP网站访问MSSQL数据库(设置成只能通过RDS Default 
            Handler或自定义商业对象才能访问数据库,可保证数据库的安全),再在客户端实例化EXCEL.APPLICATION对象,把数据集中的数据写入EXCEL中,再进行保存或打印。代码如下: 
            <BR>
            <TABLE bgColor=#f2e0c1 border=0 cellPadding=0 cellSpacing=1 
            width="100%">
              <TBODY>
              <TR>
                <TD><html><BR><BR><head><BR><BR><META content="text/html; 
                  charset=gb2312" 
                  http-equiv=Content-Type><BR><BR><title>客户端电子表格打印</title><BR><BR></head><BR><BR><body 
                  bgColor=skyblue topMargin=5 leftMargin="20" 
                  oncontextmenu="return false" rightMargin=0 
                  bottomMargin="0"><BR><BR><div 
                  align="center"><center><BR><BR><table border="1" 
                  bgcolor="#ffe4b5" style="HEIGHT: 1px; TOP: 0px" 
                  bordercolor="#0000ff"><BR><BR><tr><BR><BR><td align="middle" 
                  bgcolor="#ffffff" bordercolor="#000080"><BR><BR><font 
                  color="#000080" 
                  size="3"><BR><BR>客户端电子表格打印<BR><BR></font><BR><BR></td><BR><BR></tr><BR><BR></table><BR><BR></div><BR><BR><form 
                  name="myform"><BR><BR><DIV align=left><BR><BR><input 
                  type="button" value="Excel Report" name="report" 
                  language="vbscript" onclick="fun_excel()" style="HEIGHT: 32px; 
                  WIDTH: 
                  90px"><BR><BR></div><BR><BR></form><BR><BR></body><BR><BR></html><BR><BR><script 
                  language="vbscript"><BR><BR>sub fun_excel()<BR><BR>Dim 
                  rds,rs,df<BR><BR>dim strCn,strSQL,StrRs<BR><BR>Dim xlApp, 
                  xlBook, xlSheet1<BR><BR>set rds = 
                  CreateObject("RDS.DataSpace")<BR><BR>Set df = 
                  rds.CreateObject("RDSServer.DataFactory","http://192.168.0.1") 
                  '192.168.0.1 为WEB服务器IP地址<BR><BR>strcn="provider=ms 
                  remote;remote 
                  server=http://192.168.0.1;handler=msdfmap.handler;data 
                  source=pubsdatabase;" '192.168.0.1 为WEB服务器IP地址<BR><BR>strsql= 
                  "getalljobs"<BR><BR>Set rs = df.Query(strCn, 
                  strSQL)<BR><BR><BR>Set xlApp = 
                  CreateObject("EXCEL.APPLICATION") 
                  '注意不是:Server.CreateObject("EXCEL.APPLICATION")<BR><BR>Set 
                  xlBook = xlApp.Workbooks.Add<BR><BR>Set xlSheet1 = 
                  xlBook.Worksheets(1)<BR><BR>xlSheet1.cells(1,1).value 
                  ="职务表"<BR><BR>xlSheet1.range("A1:D1").merge<BR><BR>xlSheet1.cells(2,1).value 
                  = "job_id"<BR><BR>xlSheet1.cells(2,2).value = 
                  "job_desc"<BR><BR>xlSheet1.cells(2,3).value = 
                  "max_lvl"<BR><BR>xlSheet1.cells(2,4).value = 
                  "min_lvl"<BR><BR>cnt =3<BR><BR>do while not 
                  rs.eof<BR><BR>xlSheet1.cells(cnt,1).value = 
                  rs("job_id")<BR><BR>xlSheet1.cells(cnt,2).value = 
                  rs("job_desc")<BR><BR>xlSheet1.cells(cnt,3).value = 
                  rs("max_lvl")<BR><BR>xlSheet1.cells(cnt,4).value = 
                  rs("min_lvl")<BR><BR>rs.movenext<BR><BR>cnt = cint(cnt) + 
                  1<BR><BR>loop<BR><BR>xlSheet1.Application.Visible = 
                  True<BR><BR>end 
            sub<BR><BR></script></TD></TR></TBODY></TABLE><BR>  也可以实例化RDS 
            DataControl,只需把以上部分代码进行修改:<BR><BR>
            <TABLE bgColor=#f2e0c1 border=0 cellPadding=0 cellSpacing=1 
            width="100%">
              <TBODY>
              <TR>
                <TD>set rds = CreateObject("RDS.DataSpace")<BR><BR>Set df = 
                  rds.CreateObject("RDSServer.DataFactory","http://192.168.0.1") 
                  '192.168.0.1 为WEB服务器IP地址<BR><BR>strcn="provider=ms 
                  remote;remote 
                  server=http://192.168.0.1;handler=msdfmap.handler;data 
                  source=pubsdatabase;" '192.168.0.1 为WEB服务器IP地址<BR><BR>strsql= 
                  "getalljobs"<BR><BR>Set rs = df.Query(strCn, 
              strSQL)</TD></TR></TBODY></TABLE><BR>  修改为:<BR><BR>
            <TABLE bgColor=#f2e0c1 border=0 cellPadding=0 cellSpacing=1 
            width="100%">
              <TBODY>
              <TR>
                <TD>set DC = 
                  createobject("RDS.DataControl")<BR><BR>dc.ExecuteOptions =1 
                  '设置成同步执行,可以简化下步代码<BR><BR>dc.FetchOptions = 1<BR><BR>With 
                  dc<BR><BR>.Server = "http://192.168.0.1"<BR><BR>.Handler = 
                  "MSDFMAP.Handler"<BR><BR>.Connect = "Data 
                  Source=pubsdatabase;"<BR><BR>.Sql = 
                  "getalljobs"<BR><BR>.Refresh<BR><BR>End With<BR><BR>set rs= 
                  dc.Recordset</TD></TR></TBODY></TABLE><BR>  修改文件MSDFMAP.INI(若在WIN98,C:\windows\msdfmap.ini;若在WIN2000,D:\winnt\msdfmap.ini;若在WIN2000 
            SERVER,D:\winnts\msdfmap.ini)。<BR><BR>
            <TABLE bgColor=#f2e0c1 border=0 cellPadding=0 cellSpacing=1 
            width="100%">
              <TBODY>
              <TR>
                <TD>[sql getalljobs]<BR><BR>Sql="SELECT * FROM 
                  jobs"<BR><BR><BR>[connect 
                  pubsDatabase]<BR><BR>Access=Readonly<BR><BR>Connect="provider=sqloledb;data 
                  source=sql server;initial 
                catalog=pubs;UID=userid;PWD=password"</TD></TR></TBODY></TABLE><BR>  打开注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ 
            Services\W3SVC\Parameters\ADCLaunch 若无 
            RDSServer.Datafactory,请添加。本例使用RDS Default Handler访问数据库,若不通过RDS 
            Handler访问数据库,修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DataFactory\ 
            HandlerInfo 将HandlerRequired=1 设置成HandlerRequired =0。请注意,若不通过RDS 
            Handler或自定义商业对象访问数据库,将对数据库带来安全隐患,所以作者极力推荐采用只能通过RDS 
            Handler或自定义商业对象才能访问数据库的方式。<BR><BR>  下面用VB编写一个自定义商业对象,代码如下:<BR><BR>
            <TABLE bgColor=#f2e0c1 border=0 cellPadding=0 cellSpacing=1 
            width="100%">
              <TBODY>
              <TR>
                <TD>'编写ActiveX 
                  DLL,名称:rsget.dll,包含类rsreturn,方法returnrs<BR><BR>Public Function 
                  ReturnRs(strDB As Variant, strSQL As Variant) As 
                  ADODB.Recordset<BR><BR>'Returns an ADODB recordset.<BR><BR>On 
                  Error GoTo ehGetRecordset<BR><BR>Dim cn As New 
                  ADODB.Connection<BR><BR>Dim rs As New 
                  ADODB.Recordset<BR><BR>Select Case strDB<BR><BR>Case 
                  "ydjjspdatabase"<BR><BR>strDB = "ydjjsp"<BR><BR>Case 
                  "pubsdatabase"<BR><BR>strDB = "pubs"<BR><BR>End 
                  Select<BR><BR><BR>If strSQL = "getallbuy" Then<BR><BR>strSQL = 
                  "select * from buyuser"<BR><BR>GoTo nextstep<BR><BR>End 
                  If<BR><BR>If Left(strSQL, InStr(strSQL, "(") - 1) = 
                  "getpubsbyid" Then<BR><BR>If InStr(strSQL, ",") <= 0 
                  Then<BR><BR>Dim str As String<BR><BR>str = Mid(strSQL, 
                  InStr(strSQL, "(") + 2, InStr(strSQL, ")") - InStr(strSQL, 
                  "(") - 3)<BR><BR>strSQL = "select * from jobs where job_id='" 
                  &amp; str &amp; "'"<BR><BR>Else<BR><BR>Dim strstart, strend As 
                  String<BR><BR>strstart = Mid(strSQL, InStr(strSQL, "(") + 2, 
                  InStr(strSQL, ",") - InStr(strSQL, "(") - 3)<BR><BR>strend = 
                  Mid(strSQL, InStr(strSQL, ",") + 2, InStr(strSQL, ")") - 
                  InStr(strSQL, ",") - 3)<BR><BR>strSQL = "select * from jobs 
                  where job_id>='" &amp; strstart &amp; "' and job_id<='" &amp; 
                  strend &amp; "'"<BR><BR>End If<BR><BR>End 
                  If<BR><BR>nextstep:<BR><BR>Dim strConnect As 
                  String<BR><BR>strConnect = 
                  "Provider=SQLOLEDB;Server=ddk;uid=ydj;pwd=ydj; Database=" 
                  &amp; strDB &amp; ";"<BR><BR>cn.Open 
                  strConnect<BR><BR>rs.CursorLocation = 
                  adUseClient<BR><BR>rs.Open strSQL, cn, adOpenStatic, 
                  adLockOptimistic, adCmdText<BR><BR>Set ReturnRs = 
                  rs<BR><BR>Exit 
                  Function<BR><BR>ehGetRecordset:<BR><BR>Err.Raise Err.Number, 
                  Err.Source, Err.Description<BR><BR>End 
            Function</TD></TR></TBODY></TABLE><BR>  把rsget.dll复制到C:\WINDOWS或D:\WINNT,开始\运行,输入Regsvr32.exe 
            c:\windows\rsget.dll或Regsvr32.exe 
            d:\winnt\rsget.dll,按确定按钮,注册成WEB服务器组件,并在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ 
            Services\W3SVC\Parameters\ADCLaunch 添加rsget.rsreturn。<BR><BR>  若使用自定义商业对象,修改上面的ASP文件代码:<BR><BR>
            <TABLE bgColor=#f2e0c1 border=0 cellPadding=0 cellSpacing=1 
            width="100%">
              <TBODY>
              <TR>
                <TD>set rds = CreateObject("RDS.DataSpace")<BR><BR>Set df = 
                  rds.CreateObject("RDSServer.DataFactory","http://192.168.0.1") 
                  '192.168.0.1 为WEB服务器IP地址<BR><BR>strcn="provider=ms 
                  remote;remote 
                  server=http://192.168.0.1;handler=msdfmap.handler;data 
                  source=pubsdatabase;" '192.168.0.1 为WEB服务器IP地址<BR><BR>strsql= 
                  "getalljobs"<BR><BR>Set rs = df.Query(strCn, 
              strSQL)</TD></TR></TBODY></TABLE><BR>  改为:<BR><BR>
            <TABLE bgColor=#f2e0c1 border=0 cellPadding=0 cellSpacing=1 
            width="100%">
              <TBODY>
              <TR>
                <TD>set rds = CreateObject("RDS.DataSpace")<BR><BR>Set df = 
                  rds.CreateObject("rsget.rsreturn","http://192.168.0.1")<BR><BR>set 
                  rs=df.returnrs("pubsdatabase","getpubsbyid('2','10')")</TD></TR></TBODY></TABLE><BR>  另外在浏览器端需做如下配置:<BR><BR>  打开控制面板->INTERNET选项->安全性->自定义级别-> 
            对没有标记为安全的ActiveX控件进行初始化和脚本运行->开启
            <P></P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE align=center border=0 cellPadding=2 cellSpacing=0 id=footer width=770>
  <TBODY>
  <TR>
    <TD align=middle class=tdt>
      <P align=center></P></TD></TR></TBODY></TABLE><BR></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -