請教各位大大,我要用asp程式開啟一個已存在的excel檔案並關閉視窗該怎麼操作?
我寫了一支查詢程式,查詢結果有一個「下載」按鈕,按下它可以開啟一個新視窗,新視窗的程式會生成一個Excel檔案,以上均已完成,現在我想直接開啟這個Excel檔案並關閉新視窗該怎麼操作?
可否應用FileSystemObject物件或是其它物件,又該如何操作呢?請指點,謝謝!
可以透過 HTTP Header 讓瀏覽器直接下載檔案。
<%
' 假設您的檔案路徑已經產出
Dim filePath, fileName
fileName = "Report.xlsx"
filePath = Server.MapPath("download/" & fileName)
' 1. 清除緩存並設定內容類型
Response.Clear
Response.ContentType = "application/vnd.ms-excel" ' 舊版 xls 可用 application/msexcel
Response.AddHeader "Content-Disposition", "attachment; filename=" & fileName
' 2. 使用 ADODB.Stream 讀取檔案並傳送到用戶端
Dim objStream
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1 ' adTypeBinary
objStream.LoadFromFile filePath
Response.BinaryWrite objStream.Read
objStream.Close
Set objStream = Nothing
' 3. 結束回應
Response.End
%>
謝謝你的回覆,我修改程式如下:
<%
Dim filePath, fileName
fileName = "Xray_Rpt_20251225.xlsx"
filePath = "D:/Web/Report"
Response.Clear
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "Content-Disposition", "attachment; filename=" & fileName
Dim objStream
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromFile filePath
Response.BinaryWrite objStream.Read
objStream.Close
Set objStream = Nothing
Response.End
%>
但是它顯示「網頁似乎發生問題,或可能已永久移至新的網址。」的錯誤訊息
看到這個錯誤訊息,通常是因為 objStream.LoadFromFile 找不到檔案,或是 filePath 的格式不正確,導致 ASP 程式在中途崩潰(HTTP 500 錯誤),瀏覽器因而顯示「網頁發生問題」。
LoadFromFile 需要的是實體絕對路徑。雖然您寫了 D:/Web/Report,但漏掉了最後的反斜線與檔案名稱。filePath = "D:\Web\Report\" & fileName
請留意 Windows 系統中,檔案路徑使用反斜線 \
D:\Web\Report 這個資料夾有 「讀取」 權限,否則 ADODB.Stream 無法讀取檔案。
iThome鐵人賽