Excel下载不发生从服务器



我试图从服务器下载一个Excel文件上的按钮单击,但它没有发生。它只是执行代码,但没有进行下载。

Protected Sub btn_dwnldexcel_Click(sender As Object, e As EventArgs) Handles btn_dwnldexcel.Click
Dim fileToDownload = Server.MapPath("./Data/nd_format.xls")
''Response.ContentType = "application/octet-stream"
Response.ContentType = "application/vnd.ms-excel"
Dim cd = New ContentDisposition()
cd.Inline = False
cd.FileName = Path.GetFileName(fileToDownload)
Response.AppendHeader("Content-Disposition", cd.ToString())
Dim fileData As Byte() = System.IO.File.ReadAllBytes(fileToDownload)
Response.OutputStream.Write(fileData, 0, fileData.Length)
End Sub

如有任何意见,不胜感激。

与其尝试从同一页面发送数据,不如使用通用处理程序,它不会有处理aspx页面的开销。

因此,如果您向项目添加新项并找到"通用处理程序(.ashx)"(或类似的),并使用如下代码:

Imports System.Web
Imports System.Web.Services
Imports System.IO
Public Class DownloadExcelFile
Implements System.Web.IHttpHandler
Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
Dim actualFile = Server.MapPath("~/Data/nd_format.xls")
If File.Exists(actualFile) Then
context.Response.ContentType = "application/octet-stream"
context.Response.AddHeader("content-disposition", "attachment; filename=""" & Path.GetFileName(actualFile) & """")
context.Response.TransmitFile(actualFile)
Else
context.Response.Clear()
context.Response.TrySkipIisCustomErrors = True
context.Response.StatusCode = 404
context.Response.Write("<html><head><title>File not found</title><style>body {font-family: Arial,sans-serif;}</style></head><body><h1>File not found</h1><p>Error.</p></body></html>")
context.Response.End()
End If
End Sub
ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
End Class

那么你可以使用超链接来代替Button:

<a href="DownloadExcelFile.ashx">Download Excel File</a>

(如果需要,可以将超链接样式化为CSS按钮)

最新更新