I want the excel file to download when user calls this method. File is downloading successfully but this is creating another excel file in the classPath of project. Can anyone please help me to avoid this classPath file creation. Thanks in advance.
@Override public void downloadExcel(HttpServletRequest request,HttpServletResponse response) throws IOException { File file = new File("Segmentdetail.xlsx"); XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet spreadsheet = workbook.createSheet("SegmentLogs Info"); spreadsheet.setDefaultColumnWidth(20); .....Here is the logic for generating sheet which is quite big so iam skipping it. } FileOutputStream out = new FileOutputStream(file); workbook.write(out); downloadFile(file,response); out.close(); workbook.close(); } private void downloadFile(File file, HttpServletResponse response){ try { response.setContentType("application/vnd.ms-excel"); response.addHeader("content-disposition", "attachment; filename=Segmentdetail.xlsx"); response.setHeader("Pragma", "public"); response.setHeader("Cache-Control", "no-store"); response.addHeader("Cache-Control", "max-age=0"); FileInputStream fin = null; try { fin = new FileInputStream(file); } catch (final FileNotFoundException e) { e.printStackTrace(); } final int size = 1024; try { response.setContentLength(fin.available()); final byte[] buffer = new byte[size]; ServletOutputStream outputStream = null; outputStream = response.getOutputStream(); int length = 0; while ((length = fin.read(buffer)) != -1) { outputStream.write(buffer, 0, length); } fin.close(); outputStream.flush(); outputStream.close(); } catch (final IOException e) { e.printStackTrace(); } }catch (final Exception ex){ ex.printStackTrace(); } }