MVC4+EF5+ORACLE项目点滴记录(002)下载导出生成的EXCEL

Posted on 2015-04-07 16:58  xear  阅读(315)  评论(0编辑  收藏  举报

1.首先在CityController下写DownLoad()方法

1  public ActionResult DownLoad()
2         {
3             /* 这里的 Virtualpath 表示你要设置下载的文件是哪个? 
4                项目中 系统总是默认在UI层的DownLoadFile文件夹中找CITY信息.xls。
5                然后设置FileDownloadName 为你要下载时保存的文件名字是什么,
6                我这里设置的为下载时默认保存为DownFileName.rar       */
7             return new DownloadResult { VirtualPath = "~/DownLoadFile/CITY信息.xls", FileDownloadName = "城市信息.xls" };
8         }

2.再接着下面写方法 

 1  public class DownloadResult : ActionResult
 2         {
 3             public DownloadResult()
 4             {
 5             }
 6 
 7             public DownloadResult(string virtualPath)
 8             {
 9                 this.VirtualPath = virtualPath;
10             }
11 
12             public string VirtualPath
13             {
14                 get;
15                 set;
16             }
17 
18             public string FileDownloadName
19             {
20                 get;
21                 set;
22             }
23             /*
24                该类主要是对 VirtualPath和FileDownloadName进行初始一下,
25                很重要的一点是AddHeader("content-disposition","attachment; filename="+ this.FileDownloadName);
26                this.FileDownloadName 是在action里new DownloadResult类时,
27                传进来的参数, 下面的Server.MapPath是保存下载文件在什么地方,根据用户选择而定。
28              */
29             public override void ExecuteResult(ControllerContext context)
30             {
31                 if (!String.IsNullOrEmpty(FileDownloadName))
32                 {
33                     context.HttpContext.Response.AddHeader("content-disposition",
34                       "attachment; filename=" + this.FileDownloadName);
35                 }
36 
37                 string filePath = context.HttpContext.Server.MapPath(this.VirtualPath);
38                 context.HttpContext.Response.TransmitFile(filePath);
39             }
40         }

3.View层代码

1  <a href=@Url.Content("/City/DownLoad") iconcls="icon-save">下载</a>

4.完成  用户在指定地址下载文件文件保持的地方用户自己选