Из маршрута API: api / exportExcel, я хочу создать файл Excel с .netCore 2.0 и EPPlus, чтобы пользователь мог загрузить его на свой компьютер, но файл не был создан, и у меня нет ошибки сервера. С другой стороны, у меня есть двоичный контент в ответе: PK!rNäH¯3[Content_Types].xmlµÏJ1Æ_eÉU´D, etc...
Вот мой код:
[HttpPost("exportBooks")]
public FileResult ExportBooks([FromBody] Books[] books)
{
var comlumHeadrs = new string[]
{
"Book Id",
"Name",
};
byte[] result;
using (var package = new ExcelPackage())
{
var worksheet = package.Workbook.Worksheets.Add("Current Book"); //Worksheet name
using (var cells = worksheet.Cells[1, 1, 1, 5])
{
cells.Style.Font.Bold = true;
}
for (var i = 0; i < comlumHeadrs.Count(); i++)
{
worksheet.Cells[1, i + 1].Value = comlumHeadrs[i];
}
//Add values
var j = 2;
foreach (var book in books)
{
worksheet.Cells["A" + j].Value = book.BookId;
worksheet.Cells["B" + j].Value = book.name;
j++;
}
result = package.GetAsByteArray();
var excelFile= new FileContentResult(result, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
{
FileDownloadName = "book-export.xlsx"
};
return excelFile;
}
}
Угловой сервис:
exportBooks(books: Book[]): Observable<Book[]> {
const httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};
return this.http.post<Book[]>(`${this.bookUrl}/exportBooks`, books, httpOptions).pipe(
catchError(this.handleError('excelReport', [])),
);
}