次のコードは、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" になります。置換を実行してスペースを削除することはできますが、これにより一部のファイル名が少し奇妙に見えます。ファイル拡張子はそのままで、他の問題はないようですが、誰かが説明または修正を提供できるかどうか疑問に思いましたか?