| 订阅 | 在线投稿
分享
 
 
 

asp生成excel报表

2008-10-25 09:18:37 编辑來源:互联网 国际版 评论
 
 
本文为【asp生成excel报表】的汉字拼音对照版显示拼音
  1. qianyan

  baobiaodayintongchangshiguanlixinxixitongzhongdeyigechongyaomokuaierExcelpingjietagongnengqiangdayingyonglinghuotongyongxingqiangdengdeyoushizaibaobiaodayinzhonghuodele广guangfandeyingyong

  zuichudeguanlixinxixitongjibenshangshicaiyongkehuji/fuwuqiC/SmoshikaifadedansuizheWWWde广guangfanyingyongmuqiandeguanlixinxixitongyijingzhujiankaishicongC/Smoshixiangliulanqi/fuwuqiB/SmoshizhuanbianB/SmoshijuyouchuantongC/Smoshisuobujidehenduotedianrugengjiakaifangyuruanyingjianwuguanyingyongkuochonghexitongweihushengjifang便biandengdengmuqianyichengweiqiyewangshangshouxuandejisuanmoshiyuanxianzaiC/SxiadehenduoruanjiandoukaishiyizhidaoB/SmoshixiayouyuB/SmoshideteshuxingzaiC/SxiaxiangduijiaoyishixiandeExcelbaobiaodayingongnengzaiB/SxiaquechengweiyigenandianbenwengenjuzaishijidexiangmuzhongzongjiedejingyanyiASPweiligeichuleyigejiaohaodetongyongfangfa

  2. gongnengshixian

  weileshuomingwentizhelijuyigelizixitongpingtaishiWindows 2000+SQL Server 2000+IIS 5.0+ASP 3baobiaocaiyongdeshiExcelyaoqiuanzhaogeidingdebaobiaogeshishengchengtushuxiaoshoutongjidebaobiaobingnenggoudayin

  2.1 Excelbaobiaomobandezhizuo

  shouxiangenjugeidingdebaobiaogeshizhizuoyigeExcelmobanjiushiyaodayindebaobiaodebiaogedangranqizhongxuyaocongshujukuzhongdongtaitongjishengchengdeshujuliuzhekongbaizhegebaobiaoxianzaiExcelzhonghuahaoranhoubaocunweimobancunfangzaiqilaizheliwei\test\book1.xlt

  2.2 Excelbaobiaodeshengchengyudayin

  zhelicaiyongleExceldeApplicationzujiangaizujianzaianzhuangExcelshianzhuangdaoxitongzhongwomendecaozuoyedoushizhenduigaizujian

  (1) jianliExcel.Applicationduixiang

  set objExcel=CreateObject("Excel.Application")

  (2) dakaiExcelmoban

  objExcel.Workbooks.Open(server.mappath("\test")&"\book1.xlt") 'dakaiExcelmoban

  objExcel.Sheets(1).select 'xuanzhonggongzuoye

  set sheetActive=objExcel.ActiveWorkbook.ActiveSheet

  (3) Exceldechangguitianjiacaozuo

  lirusheetActive.range("g4").value=date() zhelitianjiadeshishijiandangranyekeyishinizhidingderenheshuju

  (4) Excelzhongtianjiashujukuzhongdejilu

  zhelijiasheyiyouyigeshujujiadoRsetcunfangyouSqlcaozuoshengchengdetongjishuju

  num=7 congExceldediqixingkaishi

  do until adoRset.EOF xunhuanzhizhishujujizhongdeshujuxiewan

  strRange="d"&num&":f"&num shedingyaotianxieneirongdedanyuanquyu

  sheetActive.range(strRange).font.size=10 shedingzitidaxiao

  sheetActive.range(strRange).WrapText=false shedingwenzihuijuan

  sheetActive.range(strRange).ShrinkToFit=true shedingshifouzidongshiyingbiaogedanyuandaxiao

  sheetActive.range(strRange).value=array(adoRset("bookid"),adoRset("bookname"),adoRset("author")) bashujujizhongdeshujutianxiedaoxiangyingdedanyuanzhong

  num=num+1

  adoRset.MoveNext

  loop

  (5) Excellinshibaobiaowenjiandebaocunjichuli

  shijiyunxingzhongyinggaizhuyimeiciyigeyonghujinxingbaobiaodayinshidoucaiyongyigelinshideExcelwenjianerbushiyingxingguidingwenjianmingyinweiruguoyonggudingdewenjianmingdehuazhiyoudiyicishengchengshichenggongdehoumiandecaozuodouhuiyinweiyicunzaitongmingwenjianerdaozhishibaisuoyiwomenxuyaomeicidouchanshengyigelinshideerqiebuchongfudewenjianmingzhelikeyicaiyongzidingyidegetTemporaryFile()hanshuyoulaishengchengranhoucunfangzaibianliangfilenamezhong,yongbianliangfileposbiaoshizhexielinshiwenjiandelujing

  ciwairuguozhexielinshiwenjianbuchulidehuajiuerjiuzhihuichengweiwenjianlajiyincizaimeigeyonghutijiaoExcelbaobiaodayinqingqiushiyaoxianshanchulinshimuluxiasuoyouyuanxianchanshengdelinshidayinwenjian

  linshiwenjiandechulizhuyaodaimaruxia

  function getTemporaryFile(myFileSystem)

  dim tempFile,dotPos

  tempFile=myFileSystem.getTempName

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

  getTemporaryFile=mid(tempFile,1,dotPos)&"xls"

  end function

  set myFs=createObject("scripting.FileSystemObject")

  filePos=server.mappath("\test") & "\tmp\" 'yaocunfangdayinlinshiwenjiandelinshimulu

  fileName=getTemporaryFile(myFs) 'qudeyigelinshiwenjianming

  myFs.DeleteFile filePos&"*.xls" 'shanchugaimuluxiasuoyouyuanxianchanshengdelinshidayinwenjian

  set myFs=nothing

  Excellinshiwenjiandebaocundaimawei

  objExcel.ActiveWorkbook.saveas filePos&filename

  (6) 退tuichuExcelyingyong

  objExcel.quit

  set objExcel=Nothing

  (7) Excelbaobiaodedayin

  qianmiandebuzhouyijingshengchengleExcelbaobiaoxiayibujinxingdayincaiyongdeceluekeyiyouliangzhong

  fanganyitigongshangmianshengchengdeExcelbaobiaolinshiwenjianlianjiegeiyonghuyonghukeyizhijiedianjizailiulanqizhongdakaiExcelbaobiaobingtongguoliulanqidedayingongnengjinxingdayinyekeyidianjiyoujianranhoulingcundaobendihouzaizuodayindengxiangguanchuli

  fanganershengchengExcelbaobiaohouzhijiezaikehuduanjiazaidaoliulanqidangranzaimeiyouwanquanjiazaishiyinggaitishizhengzaijiazaiqingdengdaidengziyang

  2.3 xitongpeizhiyuzhuyishixiang

  suiranyishangdaimahenjiandandanshijiyingyongbudangjingchanghuichuxiancuowusuoyixiamianyaojiangdaodexitongpeizhihezhuyishixiangfeichangguanjian

  (1) qianwanyaobaozhengyishangdaimashurudezhengquexingfouzeyidanyunxingcuowuExcelduixianghuizhiliuneicunnanyixiaochudaozhixiayicitiaoyongshisudukuangmanbingchanshengneicunbukeduxiedeWindowscuowuzheshidejiejuefangfajiushizhuxiaodangqianyonghuruguohuanbuxingjiuzhinengResetle

  (2) yidingyaoshezhihaofuzedayingongnengdeaspwenjiandequanxianfangfashizaiIISguanlizhongxuanzegaiaspwenjianyoujianranhouxuanshuxing/wenjiananquanxing/"niming访fangwenheyanzhengkongzhizaizheliIISmorenshiniming访fangwenyinggaixuanzeyanzheng访fangwenzhelijibenyanzhenghejichengWindowsyanzhengliangzhongfangshiyunkedanqianzhebugouanquanzheyidianwubichongyaofouzeyingyongdangzhonghuichucuode

  (3) youdeshihoubaobiaofenweiduoyeerqiewomenxiwangmeiyiyeyouxiangtongdebiaotouyaoqiubiaotoumeiyedouzidongdayinkeyizaiExcelmobanzhongjinxingshezhifangfaruxiaxuanzecaidan"wenjian"/"yemianshezhi"/"gongzuobiao"ranhouzai"dingduanbiaotixing"shurunibiaotoudexingshu(rubiaotouwei1-3xingjitianru$1$3)

  

  3zongjie

  yishangwomengeichuleyigecaiyongASPxiedezaiB/SmoshixiashixianEXCELbaobiaodeshengchengyudayindelizizaishijidangzhongyijingdedaolelianghaodeyingyongshishiyezhengmingzhegelizidedaimasuiranbunanxiedanyidingyaozhuyixitongdepeizhizheyeshiwushucishibaihoudechudejingyan原文
 
 
1. 前言 报表打印通常是管理信息系统中的一个重要模块,而Excel凭借它功能强大、应用灵活、通用性强等的优势在报表打印中获得了广泛的应用。 最初的管理信息系统基本上是采用客户机/服务器(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的Application组件,该组件在安装Excel时安装到系统中。我们的操作也都是针对该组件。 (1) 建立Excel.Application对象 set objExcel=CreateObject("Excel.Application") (2) 打开Excel模板 objExcel.Workbooks.Open(server.mappath("\test")&"\book1.xlt") '打开Excel模板 objExcel.Sheets(1).select '选中工作页 set sheetActive=objExcel.ActiveWorkbook.ActiveSheet (3) Excel的常规添加操作 例如sheetActive.range("g4").value=date() ‘这里添加的是时间,当然也可以是你指定的任何数据 (4) Excel中添加数据库中的纪录 这里假设已有一个数据集adoRset,存放由Sql操作生成的统计数据。 num=7 ‘从Excel的第七行开始 do until adoRset.EOF ‘循环直至数据集中的数据写完 strRange="d"&num&":f"&num ‘设定要填写内容的单元区域 sheetActive.range(strRange).font.size=10 ‘设定字体大小 sheetActive.range(strRange).WrapText=false ‘设定文字回卷 sheetActive.range(strRange).ShrinkToFit=true ‘设定是否自动适应表格单元大小 sheetActive.range(strRange).value=array(adoRset("bookid"),adoRset("bookname"),adoRset("author")) ‘把数据集中的数据填写到相应的单元中 num=num+1 adoRset.MoveNext loop (5) Excel临时报表文件的保存及处理 实际运行中应该注意每次一个用户进行报表打印时都采用一个临时的Excel文件,而不是硬性规定文件名,因为如果用固定的文件名的话,只有第一次生成是成功的,后面的操作都会因为已存在同名文件而导致失败。所以我们需要每次都产生一个临时的而且不重复的文件名,这里可以采用自定义的getTemporaryFile()函数由来生成,然后存放在变量filename中,用变量filepos表示这些临时文件的路径。 此外如果这些临时文件不处理的话久而久之会成为文件垃圾,因此在每个用户提交Excel报表打印请求时要先删除临时目录下所有原先产生的临时打印文件。 临时文件的处理主要代码如下: function getTemporaryFile(myFileSystem) dim tempFile,dotPos tempFile=myFileSystem.getTempName dotPos=instr(1,tempFile,".") getTemporaryFile=mid(tempFile,1,dotPos)&"xls" end function set myFs=createObject("scripting.FileSystemObject") filePos=server.mappath("\test") & "\tmp\" '要存放打印临时文件的临时目录 fileName=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报表的生成与打印的例子,在实际当中已经得到了良好的应用。事实也证明,这个例子的代码虽然不难写,但一定要注意系统的配置,这也是无数次失败后得出的经验。
󰈣󰈤
日版宠物情人插曲《Winding Road》歌词

日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。 最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。 歌手:Def...

兄弟共妻,我成了他们夜里的美食

老钟家的两个儿子很特别,就是跟其他的人不太一样,魔一般的执着。兄弟俩都到了要结婚的年龄了,不管自家老爹怎么磨破嘴皮子,兄弟俩说不娶就不娶,老父母为兄弟两操碎了心...

网络安全治理:国家安全保障的主要方向是打击犯罪,而不是处置和惩罚受害者

来源:中国青年报 新的攻击方法不断涌现,黑客几乎永远占据网络攻击的上风,我们不可能通过技术手段杜绝网络攻击。国家安全保障的主要方向是打击犯罪,而不是处置和惩罚...

 
 
 
>>返回首页<<
 为你推荐
 
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 
 热帖排行
 
单纯美女 迷人女孩
校园甜美少女
忍辱负重
大学校园
 
 
王朝网络微信公众号
微信扫码关注本站公众号wangchaonetcn
 
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
©2005- 王朝网络 版权所有