设为首页
加入收藏
站内地图
旧版入口
当前位置:首页 > 站长学院 > 网络编程 > ASP

WEB应用中报表打印的实现

作者:佚名 出处:网络转载 时间:11-18 点击:

内容载入中...
   随着世界范围内Internet环境的形成,全球正进入一个以网络为中心的计算时代。Web模型是在传统的C/S模型的基础上发展起来的一种新的Browser/Server计算模式。Browser/Server模型简化了C/S中的客户端,客户端只需装上操作系统、网络协议软件及浏览器;而服务器端则集中了所有的应用逻辑,开发、维护等几乎所有工作也都集中在服务器端。这时的客户机被称为瘦客户机,服务器被称为肥服务器。而WEB应用中的客户端的报表打印则没有C/S模型那么容易实现,如何在不使用ActiveX控件的情况下,实现打印字体、字体颜色、表格宽度、打印纸型等的设置。下面就以一个小例子来说明。

  一、创建数据库
  用ACCESS创建一个名为user.mdb的数据库,然后建一张名为user的表,表结构如下:
  字段名称数据类型
  username 文本
  name 文本
  sex 文本

  二、在asp中的实现
  创建一个名为aspreport.asp的文件,其源代码如下:
  <% 
  ’等到文本缓冲完才显示
  response.buffer = true
  dim accessdb, cn, rs, sql
  ’数据库名
  accessdb="user.mdb" 
  ’连接数据库
  cn="DRIVER={Microsoft Access Driver (*.mdb)};"
  cn=cn & "DBQ=" & server.mappath(accessdb)
  ’创建记录集
  Set rs = Server.CreateObject("ADODB.Recordset")
  ’查询语句
  sql = "select * from user " 
  ’开始查询
  rs.Open sql, cn
  %>
  <% 
  ’告诉浏览器用word来显示文档内容
  Response.ContentType = "application/msword" 
  ’文档设定
  response.AddHeader "content-disposition", "inline; filename=report.doc"
  %>
  <html>
  <head>
  <title>报表</title>
  </head>
  <body bgcolor="#FFFFFF">
  <center><h1>报表</h1></center>
  <table border=1 cellspacing=0 cellpadding=0 bordercolor=#000000 align=center>
  <tr>
  <td>用户名</td>
  <td>真实姓名</td>
  <td>性别</td>
  </tr>
  <%
  ’移到第一个记录
  rs.movefirst
  do while not rs.eof
  %>
  <tr>
  <td><%= rs("username") %></td>
  <td><%= rs("name") %></td>
  <td><%= rs("sex") %></td>
  </tr>
  <%
  ’移到下一个记录
  rs.movenext
  loop %>
  <%
  ’关闭记录集
  rs.close
  set rs=nothing
  response.flush
  response.end
  %>
  </table>
  </body>
  </html>
  把上面的report.asp文件和user.mdb数据库放在同一目录下,再用iis或pws把他们所在的目录发布,打开浏览器,只要客户端机子上有装word,就会自动调用word以内嵌方式在浏览器上显示,此时完全可以像使用word一样来调整和打印。

  三、在jsp中的实现
  创建一个名为jspreport.jsp的文件,其源代码如下:
  <%@ page contentType="application/msword;charset=gb2312" %>
  <%@ page import="java.sql.*" %>
  <html>
  <head>
  <title>报表</title>
  </head>
  <body bgcolor="#FFFFFF">
  <center><h1>报表</h1></center>
  <table border=1 cellspacing=0 cellpadding=0 bordercolor=#000000 align=center>
  <tr>
  <td>用户名</td>
  <td>真实姓名</td>
  <td>性别</td>
  </tr>
  <%
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
  String url="jdbc:odbc:user";
  //连接user数据库
  Connection con=DriverManager.getConnection (url, "", ""); 
  Statement stmt=con.createStatement(); 
  ResultSet rs=stmt.executeQuery("select * from user ");
  //查询user表
  while(rs.next()){
  %>
  <tr>
  <td><%= rs.getString("username") %></td>
  <td><%= rs.getString("name") %></td>
  <td><%= rs.getString("sex") %></td>
  </tr>
  <%
  }
  %>
  <%
  rs.close();
  stmt.close();
  con.close();
  %>
  </table>
  jsp的服务器以TOMCAT为例,把上面的jspreport.jsp和user.mdb放在TOMCAT的root目录下。在控制面板的ODBC中建立相应的DSN,类型mdb数据库,数据源名为user。启动TOMCAT,输入相应的url,就可以看到和以上面asp一样的效果。
  以上只是一个简单的例子,在作报表时,可以先用word设计好,然后另存为网页,再利用此网页改编成相应的脚本,就可以达到较好的效果。此方法有一个限制就是客户端要有word软件,但是会比使用ActiveX控件安全和方便,而且服务器端使用的平台与WebServer是可以比较灵活的,特别适用于基于web的OA系统。
收藏本文:
】【打印页面】【推荐给朋友】【关闭窗口

站长学院

推荐信息