В проекте Angular 6 C # / MVC я использую пакет Nuget ClosedXML для экспорта данных в Excel. Я попробовал это, напрямую вызвав метод ExportToExcel, установив его как метод действия в RouteCofing.cs action = "ExportToExcel", , и он работает нормально и создает файл xlsx, но в проекте Angular я не уверен, как вернуть управление обратно в класс обслуживания. Остальные методы в контроллере возвращают Task обратно, однако этот метод возвращает ActionResult, и я не уверен, как получить результаты обратно в класс обслуживания. Пожалуйста, смотрите прикрепленное изображение для ошибки.
Вот код:
[![public ActionResult ExportToExcel()
{
//var sheetNames = new List<string>() { "sheetName1", "sheetName2" };
var sheetNames = new List<string>() { "sheetName1" };
string fileName = "SubmissionForm_" + DateTime.Now + ".xlsx";
GenerateBook gb = new GenerateBook();
DataSet ds = gb.GetDSExportToExcel(); //gb.GetDataSetExportToExcel();
XLWorkbook wbook = new XLWorkbook();
for (int k = 0; k < ds.Tables.Count; k++)
{
DataTable dt = ds.Tables\[k\];
IXLWorksheet Sheet = wbook.Worksheets.Add(sheetNames\[k\]);
for (int i = 0; i < dt.Columns.Count; i++)
{
Sheet.Cell(1, (i + 1)).Value = dt.Columns\[i\].ColumnName;
}
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
Sheet.Cell((i + 2), (j + 1)).Value = dt.Rows\[i\]\[j\].ToString();
}
}
}
Stream spreadsheetStream = new MemoryStream();
wbook.SaveAs(spreadsheetStream);
spreadsheetStream.Position = 0;
return new FileStreamResult(spreadsheetStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = fileName };
}\[!\[enter image description here\]\[1\]\]\[1\]
enter code here][1]][1]
![enter image description here](https://i.stack.imgur.com/1TEi2.png)
звонок из класса обслуживания:
private getExportExcelUrl = this.urlStr + '/ Home / ExportToExcel';
public SetExport (данные: любой) {
return this.http.post(this.getExportExcelUrl, null).subscribe((data: any) => { });
//.pipe(map(res => <any[]>res))
//.pipe(catchError(this.handleError));
}