我正试图从带有ajax帖子的aspnet核心api返回一个Excel文件作为字节数组,但我遇到了一些问题。
我知道返回IActionResult更容易,但是对于这种情况,我需要它在ajax调用中。
后端似乎有点奏效。我创建excel报告并返回一个字节数组:
[HttpPost]
[Route("api/excel/")]
public byte[] ExportToExcel([FromBody] List<CarReports> carReports)
{
var orderReports = monthlyReports.OrderBy(x => x.Project.Code).ToList();
var workbook = new XLWorkbook();
var worksheet = workbook.Worksheets.Add("Fakturering");
// Here I create the excelsheet
var returnStream = new MemoryStream();
workbook.SaveAs(returnStream);
byte[] arr = returnStream.ToArray();
returnStream.Flush();
returnStream.Close();
return arr;
}
在前端,我使用filesaver.js创建一个blob并保存:
export function excelExport(filteredReports, type){
return dispatch => {
dispatch({ type: EXCEL_EXPORT, filteredReports, type });
dispatch(loading());
return client.excelExport(filteredReports, type)
.catch(errors => {
dispatch({type: EXCEL_EXPORT_FAIL})
dispatch(error(errors))
})
.then((response) => {
console.log(response);
const blob = new Blob([response], {
type:
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
});
fileSaver.saveAs(blob, "test.xlsx");
dispatch(done());
});
}
}
代码似乎有效,但是当我打开文件时,它看起来像这样:
似乎字节数组已放入excel表中。 有谁知道我做错了什么?也许我正在接近这个错误的