ASP+模板生成Word、Excel、html的代码第1/2页_应用技巧

大多数都是采用Excel.Application(http://www.blueidea.com/tech/program/2006/3547.asp)组件来生成
发现容易出错,而且对于大多数和我一样的菜鸟来说,比较麻烦,考虑到前些天用ASP+模板+adodb.stream生成静态页面的办法,经过多次尝试,终于掌握了一种用ASP+模板生成Excel和word的新的办法,先分享如下: 

用模板生成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)
%>

当前1/2页 12下一页阅读全文

时间: 2024-10-23 17:33:40

ASP+模板生成Word、Excel、html的代码第1/2页_应用技巧的相关文章

asp编程中常用的javascript辅助代码第1/2页_应用技巧

一些常用的辅助代码  点击返回上页代码: <form> <p><input TYPE="button" VALUE="返回上一步" ONCLICK="history.back(-1)"></p> </form> 弹出警告框代码: <form> <p><input TYPE="button" VALUE="弹出警告框" 

ASP+模板生成Word、Excel、html的代码第1/2页

大多数都是采用Excel.Application(http://www.blueidea.com/tech/program/2006/3547.asp)组件来生成 发现容易出错,而且对于大多数和我一样的菜鸟来说,比较麻烦,考虑到前些天用ASP+模板+adodb.stream生成静态页面的办法,经过多次尝试,终于掌握了一种用ASP+模板生成Excel和word的新的办法,先分享如下: 用模板生成Excel.Word最大优点: Word.Excel文档样式易于控制和调整,以往用Excel.Appli

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

用模板生成Excel.Word最大优点:    Word.Excel文档样式易于控制和调整,以往用Excel.Application来生成Excel.Word,需要写很多代码来控制排版的样式,用模版几乎不受任何限制,只需要打开word或Excel,编辑文档,选择"文件->另存为web页",即可方便的做好模板 ,用office生成的模板要比直接在DW中做好模板更加符合office偏好,生成后文件样式可与原word.Excel格式99%一样,因此建议大家用office(office9

asp.net实现word文档在线预览功能的方法_实用技巧

本文实例讲述了asp.net实现word文档在线预览功能的方法.分享给大家供大家参考.具体实现方法如下: 实现方式:office文档转html,再在浏览器里面在线浏览 1.首先引入com组件中office库,然后在程序集扩展中引入word的dll 2.将Microsoft.Office.Interop.Word的嵌入互操作类型设置为 false,如图 3.主要代码: 复制代码 代码如下: using System; using System.Collections.Generic; using

asp.net水晶报表参数字段在代码中赋值的方法_实用技巧

本文实例讲述了asp.net水晶报表参数字段在代码中赋值的方法.分享给大家供大家参考.具体实现方法如下: // 声明将参数传递给查看器控件所需的变量. ParameterFields paramFields = new ParameterFields (); ParameterField paramField = new ParameterField (); ParameterDiscreteValue discreteVal = new ParameterDiscreteValue (); P

ASP+XML实例演练编程代码第1/3页_应用技巧

实例演练ASP+XML编程 本文是一篇实例讲解的文章.作为一个普通的程序员,我深知,一个优秀的例程,对于正在学习编程的人是多么的有帮助.本文中使用的例程,是一个联系信息管理程序,我也是写来以方便自己和朋友们互相联系用的.但麻雀虽小,五脏俱全,相信对正在学习ASP+XML编程的朋友们,还是具备一定的参考价值的.  读者可以通过此实例,了解在ASP(Active Server Page)中如何操纵XML文件,并进行数据的各种处理,包括XML节点的建立.修改.删除和保存等等.文中涉及到的技术包括ASP

ASP UTF-8页面乱码+GB2312转UTF-8 +生成UTF-8格式的文件(编码)第1/2页_应用技巧

最好的方法: 先说一下基本的东西: <%@ codepage=65001%>UTF-8 <%@ codepage=936%>简体中文 <%@ codepage=950%>繁体中文 <%@ codepage=437 %>美国/加拿大英语 <%@ codepage=932 %>日文 <%@ codepage=949 %>韩文 <%@ codepage=866 %>俄文 codepage指定了IIS按什么编码读取传递过来的串串(

asp 存储过程分页代码第1/2页_应用技巧

存储过程采用的是select top 加 not in的方式完成,速度也算是相当快了 我测试过了百万级数据量一般查询在1秒一下,贴出来大家交流下,看有没有什么好的建议. 简单几句话就可以实现分页功能,请看代码: 最简单使用方法(适用于任何数据表): test.asp 复制代码 代码如下: <!--#include file="conn.asp"--> <!--#include file="Page.asp"--> <% Set My =

ASP.NET缓存方法分析和实践示例代码第1/2页_实用技巧

内存现在非常便宜 - 因此,通过以智能的方式在整个应用程序中实现缓存,可以获得很大的性能提高.缓存可以掩盖许多过失 缓存是一种无需大量时间和分析就可以获得"足够良好的"性能的方法. 这里再次强调,内存现在非常便宜,因此,如果您能通过将输出缓存 30 秒,而不是花上一整天甚至一周的时间尝试优化代码或数据库就可以获得所需的性能,您肯定会选择缓存解决方案(假设可以接受 30 秒的旧数据).缓存正是那些利用 20% 付出获得 80% 回报的特性之一,因此,要提高性能,应该首先想到缓存. 不过,