public Stream ExportToExcel(ExportExcelFormDto <TFilter> dto) { Stopwatch sw = new Stopwatch(); sw.Start(); var excel = new ExcelPackage(); var user = _userIdProvider.GetCurrentUser(); string entityName = typeof(TEntity).Name.Pluralize().ToLowerFirstLetter(); string entityDisplayName = entityName.Translate(user.Language); var workSheet = excel.Workbook.Worksheets.Add(entityDisplayName); var dbSet = _dataService.GetDbSet <TEntity>(); var query = this.ApplySearchForm(dbSet, dto, dto.Columns); query = ApplyRestrictions(query); Log.Information("{entityName}.ExportToExcel (Load from DB): {ElapsedMilliseconds}ms", entityName, sw.ElapsedMilliseconds); sw.Restart(); var entities = query.ToList(); var dtos = entities.Select(MapFromEntityToDto); Log.Information("{entityName}.ExportToExcel (Convert to DTO): {ElapsedMilliseconds}ms", entityName, sw.ElapsedMilliseconds); sw.Restart(); dtos = FillLookupNames(dtos).ToList(); Log.Information("{entityName}.ExportToExcel (Fill lookups): {ElapsedMilliseconds}ms", entityName, sw.ElapsedMilliseconds); sw.Restart(); var excelMapper = CreateExportExcelMapper(); //new ExcelMapper<TDto>(_dataService, _userIdProvider); excelMapper.FillSheet(workSheet, dtos, user.Language, dto?.Columns); Log.Information("{entityName}.ExportToExcel (Fill file): {ElapsedMilliseconds}ms", entityName, sw.ElapsedMilliseconds); return(new MemoryStream(excel.GetAsByteArray())); }
public IActionResult ExportToExcel([FromBody] ExportExcelFormDto <TFilter> dto) { var memoryStream = service.ExportToExcel(dto); return(File(memoryStream, "application/vnd.ms-excel", $"Export {EntityName.Pluralize()} {DateTime.Now.ToString("dd.MM.yy HH.mm")}.xlsx")); }