У меня есть методы в Java для работы с Excel, которые я пытаюсь выполнить модульное тестирование.Я пробовал кое-что тут и там, но у меня ничего не получается.
У меня есть следующие методы:
@RequestMapping(method = POST, produces = "application/vnd.ms-excel")
@ResponseBody
public ResponseEntity<byte[]> createExcel(@RequestBody List<ExcelDto> excelDtos) {
log.log(Level.INFO, "generate excel started");
try (InputStream is = GenerateExcelController.class.getResourceAsStream(PATH_TO_TEMPLATE)) {
this.temp = File.createTempFile("tempfile", ".xlsx");
try (FileOutputStream fs = new FileOutputStream(temp)) {
processExcel(excelDtos, is, fs);
return generateResponse();
}
} catch (Exception e) {
log.log(Level.SEVERE, "Cannot generate excel!", e);
}
return null;
}
private void processExcel(List<ExcelDto> productDto, InputStream is, FileOutputStream fs) throws IOException{
Context context = new Context();
context.putVar("products", productDto);
context.putVar("today", LocalDate.now().format(DateTimeFormatter.ofPattern("dd/MM/yyyy")));
JxlsHelper.getInstance().processTemplate(is, fs, context);
}
private ResponseEntity<byte[]> generateResponse() {
try (FileInputStream fileInputStream = new FileInputStream(temp.getPath())) {
Resource resource = new InputStreamResource(fileInputStream);
byte[] content = FileCopyUtils.copyToByteArray(resource.getInputStream());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/vnd.ms-excel"));
log.log(Level.INFO, "Download sample .xlsx request completed");
Files.delete(temp.toPath());
return new ResponseEntity<>(content, headers, HttpStatus.OK);
} catch (Exception e) {
log.log(Level.SEVERE, "Cannot find temp excel file!", e);
}
return null;
}
Может кто-нибудь мне помочь или сказать, как начать?