Как открыть файл Excel в системе пользователей с помощью Java - PullRequest
0 голосов
/ 03 октября 2018

я создаю книгу Excel с использованием Apache poi следующим образом

XSSFWorkbook hwb=new XSSFWorkbook();  
XSSFSheet sheet =  hwb.createSheet("Exam Marks Entry"); 

и записываю данные в книгу, обычно мы даем путь к файлу для хранения соответствующего файла в FileOutputStream

следующим образом

File file = new File("D\:marksSheet.xlsx");

            FileOutputStream fileOut =  new FileOutputStream(file);  
            hwb.write(fileOut);

, поэтому файл будет сохранен по указанному пути.

это веб-приложение (Spring Mvc), где пользователь нажимает на кнопку загрузки или сохраняет ее.

1.Дело в том, что мы не знаем путь каждого и каждого пользователя, поэтому я могу открыть свой файл Excel в системе пользователя, не сохраняя в каком-либо месте, чтобы пользователь мог сохранять его так, как он хочет

вот мой вызов ajax

$(document).on("click","#downlodMarksSheet",function(event){
     $.LoadingOverlay("show");
    $('#marksTableMain  tr').remove();
    $('#marksTableMain thead ').append("<tr><th><input type='checkbox' id='checkAllStuMarksList'></th><th>R.#</th><th>Name</th></tr>")
    var examCatId=$("#meExamMainEV").val();     
    var classId=$(".mainContainer #meClass").val();  
    var sectionId=$(".mainContainer #sectionId").val() ;
    var stringFromDate=$(".mainContainer #FromDate").val();
    var stringToDate=$(".mainContainer #ToDate").val();

    var marksEditParams={};
    marksEditParams["examCatId"]=examCatId;
    marksEditParams["classId"]=classId;
    marksEditParams["sectionId"]=sectionId;
    marksEditParams["stringFromDate"]=stringFromDate;
    marksEditParams["stringToDate"]=stringToDate;  
    var myJSON = JSON.stringify(marksEditParams);


    var url = contextPath+"/excel/exportExcel";

    $.ajax({             
        url : url,        
        type:"post",  
        data:myJSON,
        contentType:'application/json; charset=utf-8',  
        async: false,   
        success:function(response)   
        {    
            console.log();
             $.LoadingOverlay("hide");
        }
    });
}); 

вот мой контроллер

@PostMapping("/exportExcel")  
    public ResponseEntity<Map<String, Object>> updateStudentGeneralDetailss(@RequestBody MarksEditParams marksEditParams,HttpServletRequest request) {
        ResponseEntity<Map<String, Object>> responseEntity=null;
        message= new HashMap<String, Object>();
        try {
XSSFWorkbook hwb=new XSSFWorkbook();  
XSSFSheet sheet =  hwb.createSheet("Exam Marks Entry");
//writing data to workbook

//then targeting users download path as follows
String home = System.getProperty("user.home");
File file = new File(home+"/Downloads/"+mainDisplayDto.getClassName()+" "+mainDisplayDto.getExamName()+".xlsx");

FileOutputStream fileOut =  new FileOutputStream(file);  
hwb.write(fileOut);

if (true) {
                headers.add("head", "Student Admission");
                message.put("status", true); 
                message.put("data", ""); 
                responseEntity= new ResponseEntity<Map<String, Object>>(message, headers, HttpStatus.CREATED);

            } else {
                headers.add("head", "null");
                message.put("status", false);
                message.put("errorMessage", " Student Data  has not been updated successfully  ! ");
                responseEntity=new ResponseEntity<Map<String, Object>>(message, headers, HttpStatus.OK);
                }
        }
catch (Exception e) {
    e.printStackTrace();
}
        return responseEntity;
    }

пожалуйста, кто-нибудь может мне помочь?спасибо.

...