转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
ASP+模板生成Word、Excel、静态页的方法详解         ★★★

ASP+模板生成Word、Excel、静态页

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1070 更新时间:2011/10/13 14:45:20
ASP+模板生成Word、Excel、静态页用模板生成Excel、Word最大优点
    Word、Excel文档样式易于控制和调整,以往用Excel.Application来生成Excel、Word,需要写很多代码来控制排版的样式,用模版几乎不受任何限制,只需要打开word或Excel,编辑文档,选择"文件->另存为web页",即可方便的做好模板用office生成的模板要比直接在DW中做好模板更加符合office偏好,生成后文件样式可与原word、Excel格式99%一样,因此建议大家用office(office97~office2003)直接来生成模板框架
   主要的代码
function.asp
复制内容到剪贴板
代码:
<%
'欢迎与我交流和学习
'作者:幸福的子弹
'BLOG:http://mysheji.com/blog
'E-mail:zhaojiangang@gmail.com
'QQ:37294812
'-----------------------------------------------------------------------------
'开启容错机制
on error resume next
'功能,检测服务器是否支持指定组件
Function object_install(strclassstring)
  on error resume next
  object_install=false
  dim xtestobj
  set xtestobj=server.createobject(strclassstring)
  if -2147221005 <> Err then object_install=true
  set xtestobj=nothing
end function
if object_install("Scripting.FileSystemobject")=false then
    Response.Write "<div style='font-size:12px;color:#333;height:20px;line-height:20px;border:1px solid #DDCF8F;padding:6px;background:#FFFFED;font-family:verdana'>对不起,您的空间不支持FSO组件,请与管理员联系!</div>"
    Response.End
end if
if object_install("adodb.stream")=false then
    Response.Write "<div style='font-size:12px;color:#333;height:20px;line-height:20px;border:1px solid #DDCF8F;padding:6px;background:#FFFFED;font-family:verdana'>对不起,您的空间不支持adodb.stream功能,请与管理员联系!</div>"
    Response.End
end if
'-----------------------------------------------------------------------------
'函数名称:ReadTextFile
'作用:利用AdoDb.Stream对象来读取文本文件
'参数:FileUrl文件相对路径,FileCharSet:文件编码
Function ReadFromTextFile (FileUrl,FileCharSet)'函数
    dim str
    set stm=server.CreateObject("adodb.stream")
    stm.Type=2 '指定或返回的数据类型,
    stm.mode=3 '指定打开模式,现在为可以读写模式,类似于word的只读或锁定功能
    stm.charset=FileCharSet
    stm.open
    stm.loadfromfile server.MapPath(FileUrl)
    str=stm.readtext
    ReadFromTextFile=str
End Function
'-----------------------------------------------------------------------------
'函数名称:WriteToTextFile
'作用:利用AdoDb.Stream对象来写入文本文件
sub WriteToTextFile(FileUrl,Str,FileCharSet) '方法
    set stm=server.CreateObject("adodb.stream")
    stm.Type=2
    stm.mode=3
    stm.charset=FileCharSet
    stm.open
    stm.WriteText str
    stm.SaveToFile server.MapPath(FileUrl),2
    stm.flush
End sub
'-----------------------------------------------------------------------------
'功能:自动创建文件夹
'创建一级或多级目录,可以创建不存在的根目录
'参数:要创建的目录名称,可以是多级
'返回逻辑值,True成功,False失败
'创建目录的根目录从当前目录开始
Function CreateMultiFolder(ByVal CFolder)
Dim objFSO,PhCreateFolder,CreateFolderArray,CreateFolder
Dim i,ii,CreateFolderSub,PhCreateFolderSub,BlInfo
BlInfo = False
CreateFolder = CFolder
On Error Resume Next
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
If Err Then
Err.Clear()
Exit Function
End If
CreateFolder = Replace(CreateFolder,"","/")
If Left(CreateFolder,1)="/" Then
CreateFolder = Right(CreateFolder,Len(CreateFolder)-1)
End If
If Right(CreateFolder,1)="/" Then
CreateFolder = Left(CreateFolder,Len(CreateFolder)-1)
End If
CreateFolderArray = Split(CreateFolder,"/")
For i = 0 to UBound(CreateFolderArray)
CreateFolderSub = ""
For ii = 0 to i
CreateFolderSub = CreateFolderSub & CreateFolderArray(ii) & "/"
Next
PhCreateFolderSub = Server.MapPath(CreateFolderSub)
If Not objFSO.FolderExists(PhCreateFolderSub) Then
objFSO.CreateFolder(PhCreateFolderSub)
End If
Next
If Err Then
Err.Clear()
Else
BlInfo = True
End If
CreateMultiFolder = BlInfo
End Function
'点击下载提示
function downloadFile(strFile)
     strFilename = server.MapPath(strFile)
     Response.Buffer = True
     Response.Clear
     Set s = Server.CreateObject("ADODB.Stream")
     s.Open
     s.Type = 1
     on error resume next
     Set fso = Server.CreateObject("Scripting.FileSystemObject")
     if not fso.FileExists(strFilename) then
         Response.Write("<h1>Error:</h1>" & strFilename & " does not exist<p>")
         Response.End
     end if
     Set f = fso.GetFile(strFilename)
     intFilelength = f.size
     s.LoadFromFile(strFilename)
     if err then
         Response.Write("<h1>Error: </h1>" & err.Description & "<p>")
         Response.End
     end if
     Response.AddHeader "Content-Disposition", "attachment; filename=" & f.name
     Response.AddHeader "Content-Length", intFilelength
     Response.CharSet = "UTF-8"
     Response.ContentType = "application/octet-stream"
     Response.BinaryWrite s.Read
     Response.Flush
     s.Close
     Set s = Nothing
End Function
'-----------------------------------------------------------------------------
If Err Then
    err.Clear
    Set conn = Nothing
    Response.Write "<div style='font-size:12px;color:#333;height:20px;line-height:20px;border:1px solid #DDCF8F;padding:6px;background:#FFFFED;font-family:verdana'>网站异常出错,请与管理员联系,谢谢!</div>"
    Response.End
End If
%>
生成Word文档:
复制内容到剪贴板
代码:
<%
'创建文件
dim templateName,templatechar,filepath,filename,fileCharset,templateContent
   templateName="template/template_word.htm"        '模板名字,支持带路径,如"/moban/moban1.htm"或"temp/moban1.htm"
   templatechar="gb2312"                      '模板文本的编码
   filepath="files/word/"                     '生成文件保存的路径,当前目录请留空,其他目录,路径必须以“/”结尾
   filename="Doc1.doc"                           '即将生成的文件名
   CreateMultiFolder(filepath)                '这一句用来判断文件夹是否存在,没有则自动创建,支持n级目录
   fileCharset="gb2312"                       '打算生成的文本编码
'读取指定的模板内容
templateContent=ReadFromTextFile(templateName,templatechar)   
'以下就交给你来替换模板内容了
templateContent=replace(templateContent,"{$websiteName}","蓝色理想")
templateContent=replace(templateContent,"{$userName}","幸福的子弹")
templateContent=replace(templateContent,"{$now}",Now())
'其他内容......
'最终调用函数来生成文件         
Call WriteToTextFile(filepath&filename,templateContent,fileCharset)   
'最后关闭adodb.stream对象
stm.flush
stm.Close
set stm=nothing
downloadFile(filepath&filename)
%>
生成Excel文档:
复制内容到剪贴板
代码:
<%
'创建文件
dim templateName,templatechar,filepath,filename,fileCharset,templateContent
   templateName="template/template_excel.htm"        '模板名字,支持带路径,如"/moban/moban1.htm"或"temp/moban1.htm"
   templatechar="gb2312"                      '模板文本的编码
   filepath="files/excel/"                     '生成文件保存的路径,当前目录请留空,其他目录,路径必须以“/”结尾
   filename="Book1.xls"                           '即将生成的文件名
   CreateMultiFolder(filepath)                '这一句用来判断文件夹是否存在,没有则自动创建,支持n级目录
   fileCharset="gb2312"                       '打算生成的文本编码
'读取指定的模板内容
templateContent=ReadFromTextFile(templateName,templatechar)   
'以下就交给你来替换模板内容了
templateContent=replace(templateContent,"{$websiteName}","蓝色理想")
templateContent=replace(templateContent,"{$userName}","幸福的子弹")
templateContent=replace(templateContent,"{$now}",Now())
'其他内容......
'最终调用函数来生成文件         
Call WriteToTextFile(filepath&filename,templateContent,fileCharset)   
'最后关闭adodb.stream对象
stm.flush
stm.Close
set stm=nothing
downloadFile(filepath&filename)
%>
生成.htm静态页面
复制内容到剪贴板
代码:
<%
'创建文件
dim templateName,templatechar,filepath,filename,fileCharset,templateContent
   templateName="template/template_html.htm"        '模板名字,支持带路径,如"/moban/moban1.htm"或"temp/moban1.htm"
   templatechar="gb2312"                      '模板文本的编码
   filepath="files/html/"                     '生成文件保存的路径,当前目录请留空,其他目录,路径必须以“/”结尾
   filename="Untitled-1.htm"                           '即将生成的文件名
   CreateMultiFolder(filepath)                '这一句用来判断文件夹是否存在,没有则自动创建,支持n级目录
   fileCharset="gb2312"                       '打算生成的文本编码
'读取指定的模板内容
templateContent=ReadFromTextFile(templateName,templatechar)   
'以下就交给你来替换模板内容了
templateContent=replace(templateContent,"{$websiteName}","蓝色理想")
templateContent=replace(templateContent,"{$userName}","幸福的子弹")
templateContent=replace(templateContent,"{$now}",now())
'其他内容......
'最终调用函数来生成文件         
Call WriteToTextFile(filepath&filename,templateContent,fileCharset)   
'最后关闭adodb.stream对象
stm.flush
stm.Close
set stm=nothing
response.Write("恭喜您,"&filename&"已经生成,<a href="""&filepath&filename&""" target=""_blank"">点击查看</a>")
%>

[聊天工具]警惕“四舍五入”造成的数据误差  [常用软件]使用VBA-EXCEL97/2000实现输入金额就得到输入时间
[常用软件]POWERBUILDER与EXCEL的巧  [Web开发]JavaScript Web页面内容导出到Word、Excel
[Web开发]在IE中调用javascript打开Excel  [Web开发]用javascript将数据导入Excel
[Web开发]ASP操作Excel技术总结  [JAVA开发]Java如何操作Word,Excel,PDF文档?
[JAVA开发]全面挖掘Java Excel API 使用方法  [JAVA开发]Java操作Excel完美解决方案
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    An error occurred on the server when processing the URL. Please contact the system administrator.

    If you are the system administrator please click here to find out more about this error.

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao 信息产业部ICP备案号:鄂ICP备11006601号

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台