public IActionResult Load()
        {
            //Если файл не загружен
            if (Request.Form.Files.Count == 0)
            {
                return(RedirectToAction("Excel"));
            }

            //Обноляем БД
            var             file = Request.Form.Files.First();
            List <object[]> body = ExcelFileInteraction.FromExcel(file.OpenReadStream());

            Book       book  = null;
            Autor      autor = null;
            BooksAutor ba;

            foreach (var row in body)
            {
                //Читаем данные для книги если, есть название
                //Если авторов книги несколько, экземпляр создастся один раз
                if (row[0].ToString() != "")
                {
                    book = new Book()
                    {
                        Title       = row[0].ToString(), Edition = row[1].ToString(),
                        PublishedAt = row[2].ToString(), Description = row[3].ToString()
                    };
                    _bs.Books.Add(book);
                }

                //Авторы связываются с текущим экземпляром book
                //Если у книги нет автора или строка пустая автор не создается
                if (row[4].ToString() != "")
                {
                    autor = new Autor()
                    {
                        Name = row[4].ToString(), Dob = row[5] as DateTime?
                    };
                    _bs.Autors.Add(autor);
                }

                //Связывание проиходит только, если оба были загружены
                if (autor != null && book != null)
                {
                    ba = new BooksAutor()
                    {
                        IdAutorNavigation = autor, IdBookNavigation = book
                    };
                    _bs.BooksAutors.Add(ba);
                }

                _bs.SaveChanges();
                //Если книга без автора нужно предотвратить с предыдущим автором.
                autor = null;
            }

            return(RedirectToAction("Autors", "Autors"));
        }
        /// <summary>
        /// Позваляет получить скачать данные БД в виде excel файла
        /// </summary>
        public async Task <FileResult> Download()
        {
            //Собираем необходимые данные из БД
            var books = await _bs.Books
                        .Include(b => b.BooksAutors)
                        .ThenInclude(ba => ba.IdAutorNavigation)
                        .ToListAsync();

            List <object[]> body = new List <object[]>();

            body.Add(new object[6]);
            foreach (var book in books)
            {
                body.Last()[0] = book.Title;
                body.Last()[1] = book.Edition;
                body.Last()[2] = book.PublishedAt;
                body.Last()[3] = book.Description;
                foreach (var ba in book.BooksAutors)
                {
                    body.Last()[4] = ba.IdAutorNavigation.Name;
                    body.Last()[5] = ba.IdAutorNavigation.Dob;
                    body.Add(new object[6]);
                }
                if (book.BooksAutors.Count == 0)
                {
                    body.Add(new object[6]);
                }
            }

            string[] headers = new string[6]
            {
                "Название", "Издание", "Издатель", "Описание", "Автор", "Дата рождения автора"
            };

            //Возвращаем файл excel
            return(File(
                       ((MemoryStream)ExcelFileInteraction.ToExcel("Books Shop", headers, body,
                                                                   new StyleSheet()
            {
                HeaderBackgroundColor = (230, 184, 183), BodyBackgroundColor = (216, 228, 188)
            }))