以下代码访问一个辅助方法,该方法创建并返回一个 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”。我可以进行替换并删除空格,但这会使某些文件名看起来有点奇怪。文件扩展名似乎完好无损,没有其他问题,但想知道是否有人可以提供解释或修复?