Метода REST для возврата данных OutputStream, чтобы загрузить электронную таблицу Excel:Невозможно загрузить Excel таблицу с данными OutputStream из бэкэнда
@RequestMapping(value = "/downloadxls", method = RequestMethod.GET)
public @ResponseBody void getRecordsAndExportExcel(@RequestParam("search_param") String students, HttpServletResponse response) {
response.setContentType("application/vnd.ms-excel");
Workbook hssfWorkbook = exportExcelService.getExcelStudents(students);
try {
OutputStream out = response.getOutputStream();
hssfWorkbook.write(out);
out.flush();
out.close();
} catch (IOException e) {
logger.error("Error exporting to excel:" + e);
}
}
Я получаю данные в виде байт, но в Угловом я пытаюсь представить его как электронная таблица Excel; но он не будет загружаться. Я делаю это для преобразования:
var blob = new Blob([result.data], {type : 'application/vnd.openxmlformats-officedocument.presentationml.presentation;charset=UTF-8'});
FileSaver.saveAs(blob, "MyData.xls");
запрос и ответ заголовки:
Access-Control-Allow-Headers:x-requested-with, content-type
Access-Control-Allow-Methods:GET OPTIONS
Access-Control-Allow-Origin:*
Access-Control-Max-Age:3600
Content-Type:application/vnd.ms-excel;charset=UTF-8
Server:Apache-Coyote/1.1
Transfer-Encoding:chunked
X-Application-Context:application:8080
заголовков запроса
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8,ms;q=0.6
Connection:keep-alive
Host:localhost:8080
Origin:http://localhost:9000
Referer:http://localhost:9000/
Я делаю GET-вызов от внешнего интерфейса с помощью угловых и призывающую backend для загрузки данных в виде таблицы Excel, но он не способен преобразовать выходной поток в blob/excel. Как я могу представить таблицу Excel как загрузку?
Можете ли вы подробно остановиться на * «он не будет загружать» *? Вы получаете какие-либо ошибки в консоли? Что происходит после вызова 'window.open()'? – Phil
Возможный дубликат [JavaScript blob filename без ссылки] (http://stackoverflow.com/questions/19327749/javascript-blob-filename-withoutlink) – Phil
Я не получаю никакого window.open в html. Я получаю байты от бэкэнд до ui (также, если я пытаюсь написать excel в backend, это прекрасно), а в пользовательском интерфейсе у меня есть окно модели для загрузки опции загрузки (), и я вызываю свой JS для загрузки. Я не получаю никаких ошибок в консоли, но если пытаюсь отображать данные, они отображаются в виде байтов в консоли. Пожалуйста, предложите какие-либо изменения, которые мне нужно добавить в HTML и JS, чтобы получить файлы. – user3428736