public void fillExcelTableByType(IEnumerable <object> grid, string status, FileInfo xlsxFile) { try { if (grid != null) { ExcelPackage pck = new ExcelPackage(xlsxFile); var excel = pck.Workbook.Worksheets.Add(status); int x = 1; int y = 1; CultureInfo cultureInfo = new CultureInfo(Thread.CurrentThread.CurrentCulture.Name); Thread.CurrentThread.CurrentCulture = cultureInfo; cultureInfo.NumberFormat.NumberDecimalSeparator = "."; excel.Cells["A1:Z1"].Style.Font.Bold = true; excel.Cells.Style.HorizontalAlignment = ExcelHorizontalAlignment.Left; excel.Cells.Style.Numberformat.Format = "General"; Object dtObj = new Object(); switch (status) { case "Managers": dtObj = new ManagersDto(); break; case "Enterprises": dtObj = new EnterprisesDto(); break; case "TypeReklama": dtObj = new TypeReklamaDto(); break; case "Orders": dtObj = new OrdersDto(); break; case "Carrier": dtObj = new CarrierDto(); break; case "Wage": dtObj = new WageDto(); break; } foreach (var prop in dtObj.GetType().GetProperties()) { excel.Cells[y, x].Value = prop.Name.Trim(); x++; } foreach (var item in grid) { y++; Object itemObj = item; x = 1; foreach (var prop in itemObj.GetType().GetProperties()) { object t = prop.GetValue(itemObj, null); object val; if (t == null) { val = ""; } else { val = t.ToString(); if (t is ManagersDto) { val = ((ManagersDto)t).FullName; } if (t is EnterprisesDto) { val = ((EnterprisesDto)t).NameEnterprise; } if (t is CarrierDto) { val = ((CarrierDto)t).NameCarrier; } if (t is TypeReklamaDto) { val = ((TypeReklamaDto)t).NameReklama; } } excel.Cells[y, x].Value = val; x++; } } excel.Cells.AutoFitColumns(); pck.Save(); } else { MessageBox.Show("Данные не загружены!"); } } catch (Exception exc) { // MessageBox.Show(exc.Message, "Ошибка"); } }