ниже - C # WEB API Code для генерации Excel:
public class FileExportController : ApiController
{
[HttpGet]
public HttpResponseMessage Get()
{
var callerContext = CallerContext.DefaultCallerContext;
ReportingInput userInput = new ReportingInput();
userInput.ClientOneCode = "AVON";
string handle = Guid.NewGuid().ToString();
var @event = new GetJobReprotDataBlEvent(callerContext, userInput);
WebApiApplication.ApplicationInitializerObj.EventBus.Publish(@event);
XLWorkbook wb = new FileExportEngine().ExportExcel(@event.ReportData); //this is returning XLWorkbook
string fileName = "JobReport_" + DateTime.Now.ToString("yyyy -MM-dd HH':'mm':'ss") + ".xlsx";
using (MemoryStream memoryStream = new MemoryStream())
{
wb.SaveAs(memoryStream);
var result = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new ByteArrayContent(memoryStream.ToArray())
};
result.Content.Headers.ContentDisposition =
new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
{
FileName = fileName
};
result.Content.Headers.ContentType =
new MediaTypeHeaderValue("application/octet-stream");
return result;
}
}
Когда я вызываю этот API из браузера, я могу создать файл Excel.
http://localhost/ETLScheduler/api/FileExport - работает при прямом нажатии в браузере
Теперь я хочу использовать этот API-интерфейс в приложении Angular 5. У меня есть кнопка. При нажатии на кнопку я вызываю метод компонента downloadFile () для загрузки файла.
Ниже приведен код:
downloadReport() {
this._service.downloadJobReport('AVON');
}
где downloadJobReport () находится в моем служебном файле, как показано ниже:
downloadJobReport(clientCode: string) {
return this._http.get(APIs.downloadJobReport);
}
Когда я запускаю приложение и нажимаю кнопку Загрузить, я ничего не получаю, я имею в виду, что файл не загружается. Может кто-нибудь иметь представление, как я должен обновить мой угловой код, чтобы использовать API.
Заранее спасибо.