asp文件如何打开(asp格式文件怎么打开)

zhangyang 2022-04-19 阅读:40
  

  1.介绍

  报表打印通常是管理信息系统中的一个重要模块,而Excel因其功能强大、应用灵活、通用性强,在报表打印中得到了广泛的应用。

  起初,WWW的管理信息系统基本上是采用客户机/服务器(C/S)模式开发的,但是随着WWW的广泛应用,当前的管理信息系统已经逐渐开始从C/S模式向浏览器/服务器(B/S)模式转变。B/S模式具有许多传统C/S模式无法比拟的特点,如更加开放、软硬件独立、便于应用扩展和系统维护升级等。目前已经成为企业网计算模式的首选,很多原本在C/S模式下的软件都移植到了B/S模式。由于B/S模式的特殊性,C/S下相对容易实现的Excel报表打印功能成为了B/S下的难点,本文根据实际项目中总结的经验,以asp为例给出了一个很好的通用方法。

  2.功能实现

  为了说明这个问题,这里有一个例子。平台为Windows 2000 SQL Server 2000 IIS 5.0 ASP 3,报表采用Excel。要求按照给定的报表格式生成图书销售统计报表,并打印出来。

  2.1 excel报表模板的制作

  首先根据给定的报表格式,做一个Excel模板(也就是要打印的报表的形式),当然从数据库动态统计生成的数据是空白的。该报告首先在Excel中绘制,然后保存为模板并存储在其中。这里是\ test \ book1.xlt。

  2.2 excel报表的生成和打印

  这里用的是Excel的应用组件,安装Excel的时候就安装到系统里了。我们的运营也是针对这个组件的。

  (1)建立一个Excel。应用对象。

  set objExcel=CreateObject(' Excel。应用程序’)

  (2)打开Excel模板

  obj cel . workbooks . Open(server . mappath(' \ test ')' \ book1 . xlt ')'打开Excel模板。

  Objcel.sheets (1)。选择'选择工作页面。

  设置sheetActive=objExcel。ActiveWorkbook.ActiveSheet

  (Excel的常规加法运算

  例如,sheetactive.range ('G4 ')。value=date()'这里添加的时间当然可以是您指定的任何数据。

  (4)在Excel中添加数据库中的记录

  假设有一个数据集adoRset,存储Sql操作生成的统计数据。

  Num=7 '从Excel的第七行开始

  直到Ador设置。EOF '循环,直到数据集中的数据被写入。

  设置要填充的单元格区域。

  Sheetactive.range (str range)。font.size=10 '设置字体大小

  SheetActive。范围(STRRANGE)。' WrapText=false '设置要回滚的文本。

  Sheetactive.range (str range)。' shrinktofit=true '设置是否自动适应表格单元格大小。

  工作表激活。范围(字符串范围)。value=array (Adorset ('bookid '),Adorset ('bookname '),Adorset ('author ')'将数据集中的数据填入相应的单元格中。

  数字=数字1

  阿多塞特。下一步

  环

  (Excel临时报表文件的保存和处理

  在实际操作中,需要注意的是,用户每次打印报表时,使用的都是临时Excel文件,而不是一成不变的文件名,因为如果使用固定文件名,则只有第一次生成成功,后续操作会因为已经存在同名文件而失败。因此,我们每次都需要生成一个临时的、不重复的文件名。在这里,我们可以使用自定义的getTemporaryFile()函数来生成它,然后将其存储在变量filename中,并使用变量filepos来指示这些临时文件的路径。

  另外,如果不处理这些临时文件,久而久之就会变成文件垃圾。因此,当每个用户提交Excel报表打印请求时,应首先删除临时目录中的所有原始临时打印文件。

  处理临时文件的主要代码如下:

  函数getTemporaryFile(myFileSystem)

  dim临时文件,点位置

  tempFile=my file system . gettempname

  dotPos=instr(1,tempFile,'.')

  getTemporaryFile=mid(tempFile,1,dotPos)'xls '

  结束功能

  set myFs=createObject('脚本。file system object’)

  file pos=server . mappath(' \ test ')' \ tmp \ ' '存储临时打印文件的临时目录。

  文件名

=getTemporaryFile(myFs) '取得一个临时文件名
myFs.DeleteFile filePos&"*.xls" '删除该目录下所有原先产生的临时打印文件
set myFs=nothing
Excel临时文件的保存代码为:
objExcel.ActiveWorkbook.saveas filePos&filename
(6) 退出Excel应用
objExcel.quit
set objExcel=Nothing
(7) Excel报表的打印
前面的步骤已经生成了Excel报表,下一步进行打印,采用的策略可以有两种:
方案一:提供上面生成的Excel报表临时文件链接给用户,用户可以直接点击在浏览器中打开Excel报表并通过浏览器的打印功能进行打印,也可以点击右键然后另存到本地后再作打印等相关处理。
方案二:生成Excel报表后直接在客户端加载到浏览器,当然在没有完全加载时应该提示“正在加载,请等待”等字样。
2.3 系统配置与注意事项
虽然以上代码很简单,但实际应用不当经常会出现错误,所以下面要讲到的系统配置和注意事项非常关键。
(1) 千万要保证以上代码输入的正确性,否则一旦运行错误,Excel对象会滞留内存,难以消除,导致下一次调用时速度狂慢,并产生内存不可读写的Windows错误。这时的解决方法就是注销当前用户,如果还不行,就只能Reset了。
(2) 一定要设置好负责打印功能的asp文件的权限。方法是:在IIS管理中,选择该asp文件,右键然后选“属性”/“文件安全性”/"匿名访问和验证控制“,在这里IIS默认是匿名访问,应该选择验证访问(这里基本验证和集成Windows验证两种方式均可,但前者不够安全),这一点无比重要,否则应用当中会出错的。
(3) 有的时候报表分为多页,而且我们希望每一页有相同的表头,要求表头每页都自动打印,可以在Excel模板中进行设置。方法如下:选择菜单"文件"/"页面设置"/"工作表",然后在"顶端标题行"输入你表头的行数(如:表头为1-3行即填入:$1:$3)。

3.总结
以上我们给出了一个采用ASP写的在B/S模式下实现EXCEL报表的生成与打印的例子,在实际当中已经得到了良好的应用。事实也证明,这个例子的代码虽然不难写,但一定要注意系统的配置,这也是无数次失败后得出的经验。

asp生成excel报表(一)

  

评论(0)

二维码