я создаю книгу 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;
}
пожалуйста, кто-нибудь может мне помочь?спасибо.