예제 #1
0
        /// <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();
            }
        }