Downloading/Opening Excel File with FileResult MVC4 Not Working

user1732364 picture user1732364 · Mar 27, 2014 · Viewed 13.2k times · Source

I am trying to open an excel file on local disk in Excel using the FileResult object. When i click the file to open, it downloads the file which is named the same as my ActionResult(WTF?), and it brings up the "choose program" window when i click the downloaded file. If i choose Excel, it'll open it but what am i missing to make it download as an excel file and open it without the extra steps? Below is my switch statement for opening files. Thanks

public ActionResult GetFile(string path)
    {

        string extension = new FileInfo(path).Extension;
        if (extension != null || extension != string.Empty)
        {
            switch (extension)
            {
                case ".pdf":
                    return File(path, "application/pdf");
                case ".txt":
                    return File(path, "application/plain");
                case ".jpeg":
                    return File(path, "application/jpeg");
                case ".doc":
                    return File(path, "application/msword");
                case ".docx":
                    return File(path, "application/msword");
                case ".xls":
                    return File(path, "application/msexcel");
                case ".xlsx":
                    return File(path, "application/msexcel");
                default:
                    return File(path, "application/octet-stream");
            }
        }
        return View("Index");
    }

Answer

Jeyhun Rahimov picture Jeyhun Rahimov · Mar 28, 2014

Check this:

 case ".xls":
    return File(path, "application/vnd.ms-excel");
 case ".xlsx":
   return File(path, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

Extra info