2

以下代码访问一个辅助方法,该方法创建并返回一个 EPPlus ExcelPackage,然后将包返回给浏览器:

public ActionResult DownloadMatrixExcel(int projectId)
        {
            try
            {
                // Get project details
                var project = (from p in db.Projects
                               where p.ProjectId == projectId
                               select new
                               {
                                   companyName = p.Company.Name,
                                   projectName = p.Name
                               }).Single();

                // Must append file type to file download responses
                var fileName = project.projectName + "-" + project.companyName + "-" + DateTime.Now.ToString("yyyyMMdd", CultureInfo.InvariantCulture) + ".xlsx";

                // Configure response
                Response.Clear();
                Response.BufferOutput = false;
                Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                Response.AddHeader("content-disposition", "attachment; filename=" + fileName);

                // Create and populate excel package
                var matrixSpreadsheet = ExcelHelper.BuildMatrixExcel(projectId);
                matrixSpreadsheet.SaveAs(Response.OutputStream);

            }
            catch (Exception e)
            {
                return Content("Error: " + e.Message);
            }

            // Download okay - No ViewResult
            return new EmptyResult();
        } 

在我测试过的每个浏览器中都可以正常工作,但 FireFox 18.0.1(尚未测试其他 FF 版本)会在第一个空格处修剪文件名,因此“someproject - somecompany - thedate”只是“someproject”。我可以进行替换并删除空格,但这会使某些文件名看起来有点奇怪。文件扩展名似乎完好无损,没有其他问题,但想知道是否有人可以提供解释或修复?

4

2 回答 2

5

您应该将文件名放在引号字符 ( "filename") 之间。

于 2013-01-20T06:31:18.303 回答
4

好的,在研究另一个问题时在这里找到了答案:仅在 FireFox 中的文件下载问题

Response.AddHeader("Content-Disposition", 
                    string.Format("attachment; filename = \"{0}\"",
                    System.IO.Path.GetFileName(FileName)));

当您选择保存而不是在 FireFox 的浏览器中打开时,这也会为文件提供正确的内容类型。

于 2013-01-22T00:20:21.457 回答