Как отметил @Scott в комментариях, вы должны разбить это на более мелкие проблемы.
- Сначала создайте код для успешного создания файла Excel.Это должно вернуть
byte[]
.Для упрощения вы можете создать консольное приложение, которое сначала сохранит файл локально на ПК, протестируйте его и убедитесь, что оно работает. - Как только часть 1 заработает, скопируйте код, который генерирует
byte[]
, в ваш веб-проект.Тогда вам просто нужно выяснить, как загрузить файл в MVC на клиент.
Следующий код может помочь.
// CreateWorkBook class
public byte[] Export_To_Excel()
{
DataSet ds = getDataSetExportToExcel();
using (XLWorkbook wb = new XLWorkbook())
{
wb.Worksheets.Add(ds);
wb.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
wb.Style.Font.Bold = true;
using (MemoryStream myMemoryStream = new MemoryStream())
{
wb.SaveAs(myMemoryStream);
// return memory stream as byte array
return myMemoryStream.ToArray();
}
}
}
Тогда в вашем контроллере вы можете использовать FileResult
чтобы вернуть файл excel.Ниже приведен пример того, как вы можете сделать это в контроллере MVC.
// your MVC controller
[HttpGet]
public FileResult DownloadExcel()
{
var createExcel = new CreateWorkBook();
byte[] excelFile = null;
try
{
excelFile = createExcel.Export_To_Excel();
}
catch (Exception ex)
{
// handle exception
}
string fileType = @"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
string fileName = "excel.xlsx";
return File(excelFile, fileType, fileName);
}