Я создал фабрику в угловой для вызова службы весеннего отдыха, чтобы загрузить файл xls.Как загрузить файл xls с функцией углового и весеннего отдыха?
это моя фабрика:
angular.module('app')
.factory('SportsbookServiceCustom', function ($http) {
return {
exportToXLS: function() {
return $http.get('api/sportsbooks/downloadXLS').then(function (response) {
return response.data;
});
}
};
});
У меня есть этот код для моей службы отдыха:
@RequestMapping(value = "/sportsbooks/downloadXLS")
public void downloadXLS(HttpServletResponse response) {
Pageable pageable = new PageRequest(0, 20, Direction.ASC, "id");
Page<Sportsbook> page = sportsbookRepositoryCustom.findAll(pageable, null, null, null);
List<Sportsbook> sportsbookList = page.getContent();
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Sample sheet");
Map<String, Object[]> data = new HashMap<String, Object[]>();
data.put("1", new Object[] { "Emp No.", "Name", "Salary" });
data.put("2", new Object[] { 1d, "John", 1500000d });
data.put("3", new Object[] { 2d, "Sam", 800000d });
data.put("4", new Object[] { 3d, "Dean", 700000d });
Set<String> keyset = data.keySet();
int rownum = 0;
for (String key : keyset) {
Row row = sheet.createRow(rownum++);
Object[] objArr = data.get(key);
int cellnum = 0;
for (Object obj : objArr) {
Cell cell = row.createCell(cellnum++);
if (obj instanceof Date)
cell.setCellValue((Date) obj);
else if (obj instanceof Boolean)
cell.setCellValue((Boolean) obj);
else if (obj instanceof String)
cell.setCellValue((String) obj);
else if (obj instanceof Double)
cell.setCellValue((Double) obj);
}
}
if (workbook != null) {
// Writing file to outputstream
try {
InputStream fileInputStream = new ByteArrayInputStream(workbook.getBytes());
OutputStream output = response.getOutputStream();
response.reset();
response.setContentLength((int) (workbook.getBytes().length));
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment;filename=yourFileName.xls");
IOUtils.copyLarge(fileInputStream, output);
output.flush();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
}
код работает без ошибок, но загрузки файлов не работает. Что такое ошибка?
_ _ "Что такое ошибка?" - Это информация, которую мы ожидаем от вас. Не отправляется ли клиент обратно? Является ли 'response.data' пустым? И что самое главное, что вы хотите сделать с ответом? 'exportToXLS' сам ничего не делает. Если вы хотите, чтобы файл отображался в браузере или сохранялся, просто создайте ссылку, на которую пользователь может щелкнуть. – zeroflagL