/// <summary> /// Generate the Excel output version of the report. /// </summary> /// <param name="request"></param> /// <param name="response"></param> protected override void GenerateExcelOutput(BaseServiceGenerateReportRequest request, BaseServiceGenerateReportResponse response) { using (var excelWriter = new ExcelWriter()) { var excelRecords = new List <SecurityUserLoginHistoryReportExcelRecord>(); var dataSet = this.GetDataSource("DataSet1") as IEnumerable <USPReportSecurityUserLoginHistory>; foreach (var dataRow in dataSet) { var excelRecord = new SecurityUserLoginHistoryReportExcelRecord(); //Map the stored proc row into the csv record var config = new MapperConfiguration(cfg => { cfg.CreateMap <USPReportSecurityUserLoginHistory, SecurityUserLoginHistoryReportExcelRecord>(); }); IMapper mapper = config.CreateMapper(); mapper.Map(dataRow, excelRecord); excelRecords.Add(excelRecord); } var dataTableHelper = new DataTableHelper <SecurityUserLoginHistoryReportExcelRecord>(); var dataTable = dataTableHelper.GetTable(excelRecords); // //Specify the excel formatting // var headers = new string[] { "SecurityUserLoginHistoryId", "SecurityUserId", "UserName", "MachineName", "ApplicationCode", "SuccessfulLogin", "AccountWasLocked", "IPAddress", "Browser", "ScreenResolution", "Message", "SessionId", "SessionEndDate", "LastRequestDate", "SessionTimeoutDate", "LastRequestUrl", "CreateDate", "CreateUser", "ModifyDate", "ModifyUser" }; var format = new string[] { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }; var columns = dataTable.Columns.Cast <DataColumn>().Where(c => c.ColumnName.ToLower() != "key"). Select(column => column.ColumnName). ToArray(); excelWriter.AddSection(headers, columns, format, dataTable, 0); // //Return the Excel data // response.IsSuccessful = true; response.ReportBytes = excelWriter.SaveFile(); } }