Я использую EPPlus.Вот общая функция, которую я создал для своего приложения.Функция принимает общий List<T>
и экспортирует в Excel.Имена свойств класса (T) становятся заголовками в электронной таблице Excel.
public const string ExcelMimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
public FileContentResult ExportToExcel<T>(string reportName, IEnumerable<T> reportLines) where T : class
{
MemberInfo[] info = typeof(T).GetProperties().Select(c => (MemberInfo)c).ToArray();
ExcelPackage package = new ExcelPackage();
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Data");
worksheet.Cells["A1"].LoadFromCollection(reportLines, true, TableStyles.Light1, BindingFlags.GetProperty, info);
string fileName = $"{reportName}_{DateTime.Now:ddMMyyyy}.xlsx".Replace(" ", "-");
return File(package.GetAsByteArray(), ExcelMimeType, fileName);
}