Что это может быть? Даже не представляю куда копать.
Ошибка в Excel: в книге обнаружено содержимое которое не удалось прочитать
Использую для скачивания
js-file-download
На сервере раздаю так:
using System.IO;
using System.Threading.Tasks;
using ClosedXML.Excel;
using Microsoft.AspNetCore.Mvc;
namespace Something.Extensions
{
public static class XLWorkbookExtensions
{
public static Task<FileStreamResult> DeliverAsync(this XLWorkbook workbook,
string fileName = "attachment",
string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
{
return Task.Run(() =>
{
var memoryStream = new MemoryStream();
workbook.SaveAs(memoryStream);
memoryStream.Seek(0L, SeekOrigin.Begin);
var fileStream = new FileStreamResult(memoryStream, contentType);
fileStream.FileDownloadName = fileName;
return fileStream;
});
}
}
}
//
[HttpPost]
[Route("get-report")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<IActionResult> GetReport([FromBody] ReportParams parameters)
{
_logger.Debug(GET_REPORT_MESSAGE_TEMPLATE);
if (parameters.From >= parameters.To)
{
return BadRequest(ErrorObject("Incorrect combination of parameters."));
}
try
{
// Какой-то код...
XLWorkbook workbook = await _reportBuilder.Build(data);
return await workbook.DeliverAsync($"Report_{DateTimeOffset.UtcNow:yyyy-dd-M--HH-mm-ss}.xlsx");
}
catch (Exception ex)
{
_logger.Error(ex, GET_REPORT_MESSAGE_TEMPLATE);
return InternalServerError();
}
}
Если качаю при помощи приложения
Postman, то файл нормально скачивается и открывается в
Excel. Но вот скачивая его в
JavaScript он скачивается повреждённым.
Лог из Postman
Request Headers
POST /api/get-report HTTP/1.1
Content-Type: application/json
User-Agent: PostmanRuntime/7.25.0
Accept: */*
Cache-Control: no-cache
Postman-Token: dc3e6175-0fcd-4613-9ef1-fcbd777dfb5b
Host: localhost:5001
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Length: 82
Cookie: AppCookie=CfDJ8I5lw_HuaDpjA7DmwwY
Request Body
{
"from": "2020-01-10T23:59:59+00:00",
"to": "2021-01-01T23:59:59+00:00"
}
Response Headers
HTTP/1.1 200 OK
Date: Tue, 02 Jun 2020 20:40:34 GMT
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Server: Kestrel
Content-Length: 66060
X-Content-Type-Options: nosniff
X-Xss-Protection: 1
X-Frame-Options: DENY
Content-Disposition: attachment; filename=Report_2020-02-6--20-40-29.xlsx; filename*=UTF-8''Report_2020-02-6--20-40-29.xlsx