I'm using the following to export to excel in an MVC application from a Controller. To do this I have to use some business logic and data objects in the Controller. My export works, but I don't think I should do this in the Controller. I'm new to MVC. Is there a better way to move this logic to the Model and get it out of the Controller?
public void ExportToExcel(PortalAccountMappingModel model)
{
var data = model.GetExport();
var excelReport = new ExcelReportGenerator(Configurations.ReportTemplatesFolder);
using (ExcelReportData reportData = excelReport.GenerateReport(ExcelReportDataOutputType.StreamData, Constants.PORTAL_ACCOUNT_MAPPING_REPORT_NAME, typeof(PortalAccountMappingReportItem), data))
{
byte[] reportByteArray = reportData.DataStream.ToArray();
Response.Clear();
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", reportData.FileName));
Response.AddHeader("Content-Length", reportByteArray.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.BinaryWrite(reportByteArray);
}
}