很多人都在罈子裡問這個問題,因為代碼比較長,很多人給出的答案都不是很完整,導致一些剛接觸的人走了不少的彎路,這裡總結一下產生的過程以及原理,希望能給大家一個參考和協助
1.首先產生一個excel檔案,需要瞭解這種檔案的格式,比如檔案頭的資訊,檔案體(body部分) ,檔案底資訊;我們可以通過這樣的方式來探測一個excel檔案的結構,先建立excel檔案,開啟後另存新檔網頁形式,這樣就獲得了excel在網頁中的全部代碼 其中把一些檔案頭的資訊和檔案底資訊,我們儲存在兩個固定的檔案中,比如tou.txt 和di.txt 這樣以後我們產生excel的時候,讀取這兩個檔案內容就可以了 ,然後檔案體資訊,因為我們輸出的內容會根據我們的查詢產生不同的內容,所以這個在寫一個程式的時候直接寫就可以了,(內容部分我們完全可以按照我們打好的表格,來控制我們輸出的內容的結構)
註:將excel儲存為網頁後,我們直接再把副檔名改為.xls,系統仍然是可以開啟訪問的。所以有了這些內容,我們既可以產生.htm的excel檔案,也可以直接產生.xls的excel檔案
2.實際產生的過程。
asp程式模組-----》讀取檔案頭資訊-----》組建檔案體資訊-------》讀取檔案底資訊----》然後把這三個內容通過fso產生一個擴張名為.xls或者.htm的試算表檔案。
3。例子
檔案頭:tou.txt
檔案底:di.txt
產生部分:
sub toexcel(filename)
'TOEXCELLR變數儲存檔案體資訊,大家可以看一下,我這裡結構都是用表格控制,
TOEXCELLR="<table width='100%' border='0' cellspacing='0' cellpadding='0'><tr align='center'> "
TOEXCELLR=TOEXCELLR&"<td>公司名稱</td>"
TOEXCELLR=TOEXCELLR&"<td>公司英文名稱</td>"
TOEXCELLR=TOEXCELLR&"<td>出國任務通知書主送單位</td>"
TOEXCELLR=TOEXCELLR&"<td>出國任務通知書所需份數</td>"
TOEXCELLR=TOEXCELLR&"</tr><tr>"
TOEXCELLR=TOEXCELLR&"<td>七月網路</td>"
TOEXCELLR=TOEXCELLR&"<td>julyweb</td>"
TOEXCELLR=TOEXCELLR&"<td>七月網路</td>"
TOEXCELLR=TOEXCELLR&"<td>1</td>"
TOEXCELLR=TOEXCELLR&" </tr>"
toexcellr=toexcellr&"</table>"
tou=readtext("tou.txt")
di=readtext("di.txt")
toexcellr=tou&toexcellr&di
call savetext(filename,toexcellr)
end sub
'---------------輔助的函數,一個讀取檔案的函數,一個寫入檔案的函數
function ReadText(FileName) '這是一個用於讀出檔案的函數
'response.write server.MapPath(FileName)
'response.end
set adf=server.CreateObject("Adodb.Stream")
with adf
.Type=2
.LineSeparator=10
.Open
.LoadFromFile (server.MapPath(FileName))
.Charset="GB2312"
.Position=2
ReadText=.ReadText
.Cancel()
.Close()
end with
set ads=nothing
end function
sub SaveText(FileName,Data) '這是一個用於寫檔案的函數
set fs= createobject("scripting.filesystemobject")
set ts=fs.createtextfile(server.MapPath(FileName),true)
ts.writeline(data)
ts.close
set ts=nothing
set fs=nothing
end sub