请求保存或打开从c#下载excel表单

我正在开发一个button来下载Excel工作表中的特定报告我正在使用Microsoft.Office.Interop.Excel命名空间,一切都还好,但我的问题是如何强制要求保存或打开文件像任何其他文件下载?? 现在我的excel工作簿被自动下载到Documents中,通过这种方式,客户端并不知道文件被下载。 任何帮助,高度赞赏

这是http://weblog.west-wind.com/posts/2007/May/21/Downloading-a-File-with-a-Save-As-Dialog-in-ASPNET上的信息的一部分,应该有助于你与你的问题:

如果您希望在通过服务器端的代码点击链接时自动强制另存为对话框,则必须通过使用Response.TransmitFile(),Response.BinaryWrite()或代码stream将其传回Response。 OutputStream并添加一些自定义标题到输出。

这样做的最佳方法是使用Response.TransmitFile()从ASP.NET应用程序显式发送文件,然后添加Content Type和Content-Disposition标头。 请注意,在最近版本的IIS中,Response.TransmitFile()只能为网站的虚拟文件夹层次结构或虚拟文件提供文件。 对于虚拟path之外的文件,您必须stream入OutputStream()。

假设您的文件确实存在于文件夹层次结构中,您可以如何强制使用TransmitFile()发送的另存为对话框输出:

Response.ContentType = "image/jpeg"; Response.AppendHeader("Content-Disposition", "attachment; filename=SailBig.jpg"); Response.TransmitFile(Server.MapPath("~/images/sailbig.jpg")); Response.End(); 

这将导致打开/另存为对话框popup与SailBig.jpg作为默认文件名预设的文件名。

对文章的原作者的文章的信用。

您可以通过使用Content-Disposition标题来实现此目的

在您的示例中添加下面的代码行

 Response.AppendHeader("content-disposition","attachment; filename=" + name); 

首先检查文件的扩展名并将其保存在variables“ name ”中,然后按照上面的代码所示使用它。