Создание файла Excel и экспорт данных - PullRequest
0 голосов
/ 20 июня 2020

Может ли кто-нибудь помочь мне создать файл Excel в ядре asp. net и экспортировать на нем класс модели? Я добавляю то, что пробовал, но не знаю, правильный ли это подход

[HttpPost]
    public IActionResult ExportExcel()
    {
        var myField = typeof(Cover).GetType().GetProperties();
        using (var workbook = new XLWorkbook())
        {
            var worksheet = workbook.Worksheets.Add("Excel1");
            var currentRow = 1;
            for (int i = 0; i < myField.Length; i++)
            {
                worksheet.Cell(currentRow, i + 1).Value = myField[i].Name;

            }
            using (var stream = new MemoryStream())
            {
                workbook.SaveAs(stream);
                var content = stream.ToArray();
                return File(
                    content,
                    "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                    "users.xlsx");
            }
        }
    }

1 Ответ

0 голосов
/ 22 июня 2020

Вот вся рабочая демонстрация:

Модель:

public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
}

Контроллер:

[HttpGet]
public IActionResult ExportExcel()
{
    Student s = new Student();
    var data = new List<Student>() {
        new Student(){ Id=1,Name="aaa"},
        new Student(){ Id=2,Name="bbb"},
        new Student(){ Id=3,Name="ccc"},
    };

    var myField = s.GetType().GetProperties();

    using (var workbook = new XLWorkbook())
    {
        var worksheet = workbook.Worksheets.Add("Excel1");
        var currentRow = 1;
        for (int i = 0; i < myField.Length; i++)
        {
            worksheet.Cell(currentRow, i + 1).Value = myField[i].Name;                    
        }

        for (int index = 1; index <= data.Count; index++)
        {
            worksheet.Cell(index + 1, 1).Value = data[index - 1].Id;
            worksheet.Cell(index + 1, 2).Value = data[index - 1].Name;
        }

        using (var stream = new MemoryStream())
        {
            workbook.SaveAs(stream);
            var content = stream.ToArray();
            return File(
                content,
                "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                "users.xlsx");
        }
    }
}

Результат: введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...