Le code suivant accède à une méthode d'aide qui crée et renvoie un paquet Excel EPPlus, puis renvoie le paquet au navigateur :
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();
}
Cela fonctionne bien dans tous les navigateurs que j'ai testés, mais FireFox 18.0.1 (je n'ai pas encore testé d'autres versions de FF) coupe le nom de fichier au premier espace, de sorte que "someproject - somecompany - thedate" est juste "someproject". Je peux effectuer un remplacement et supprimer les espaces, mais cela rend certains noms de fichiers un peu bizarres. L'extension du fichier semble être intacte et il n'y a pas d'autres problèmes, mais je me demandais si quelqu'un pouvait offrir une explication ou une solution ?