ASP批量生成靜態HTML

 
Dim start ''該變量爲指針將要指向的記錄集位置,通過參數動態獲得
Dim Template ''模板文件將以字符串讀入該變量
Dim content ''替換後的字符串變量
Dim objConn ''連接對象
Dim ConnStr ''連接字符串
Dim sql ''查詢語句
Dim cnt:cnt = 1 ''本輪循環計數器初始化

start = request("start") ''獲取本輪指針的開始位置
If IsNumeric(start) Then start = CLng(start) Else start=1
If start=0 Then start = 1 ''如果start

ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath("DataBase.mdb")
sql = "select * from table_name"

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open ConnStr

set rs = Server.CreateObject("ADODB.Recordset")
rs.open sql,objConn,1,1 ''打開數據集
rs.AbsolutePosition = start ''最關鍵的一步,將指針指向start,start通過參數動態獲得

Template = getTemplate(Server.MapPath("template.html"))'' template.html爲模板文件,通過函數getTemplate讀入到字符串,模板文件中要替換的內容均以{...}括起來

While Not rs.eof And cnt<= 500 ''500是設定一次請求生成頁面的循環次數,根據實際情況修改,如果太高了,記錄集很多的時候會出現超時錯誤
content = Replace(Template,"{filed_name_1}",rs("filed_name_1")) ''用字段值替換模板內容
content = Replace(content,"{filed_name_2}",rs("filed_name_2"))
......
content = Replace(content,"{filed_name_n}",rs("filed_name_n"))

genHtml content,Server.MapPath("htmfiles/"&rs("id")&".html") ''將替換之後的Template字符串生成HTML文檔,htmfiles爲存儲靜態文件的目錄,請手動建立

cnt = cnt + 1 ''計數器加1
start = start + 1 ''指針變量遞增
rs.movenext
wend

If Not rs.eof Then ''通過刷新的方式進行下一輪請求,並將指針變量start傳遞到下一輪
response.write "<meta http-equiv=''refresh'' content=''0;URL=?start="&start&"''>"
Else
response.write "生成HTML文件完畢!"
End if

rs.Close()
Set rs = Nothing
objConn.Close()
Set objConn = Nothing

Function getTemplate(template)''讀取模板的函數,返回字符串,template爲文件名
Dim fso,f
set fso=CreateObject("Scripting.FileSystemObject")
set f = fso.OpenTextFile(template)
getTemplate=f.ReadAll
f.close
set f=nothing
set fso=Nothing
End Function

Sub genHtml(content,filename)''將替換後的內容寫入HTML文檔,content爲替換後的字符串,filename爲生成的文件名
Dim fso,f
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateTextFile(filename,true)''如果文件名重複將覆蓋舊文件
f.Write content
f.Close
Set f = Nothing
set fso=Nothing
End Sub
%>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章