将Excel报告保存到java中的客户端选定目录
使用ApachePOI,我可以下载文件作为报告。但它保存在D目录中。因为,我在代码中硬编码了D目录。 下面的代码段用于存储报告将Excel报告保存到java中的客户端选定目录,java,servlets,Java,Servlets,使用ApachePOI,我可以下载文件作为报告。但它保存在D目录中。因为,我在代码中硬编码了D目录。 下面的代码段用于存储报告 public static synchronized String writeToExcelReportGeneration(HttpServletRequest request,HttpServletResponse response){ try{ FileOutputStream out = new FileO
public static synchronized String writeToExcelReportGeneration(HttpServletRequest request,HttpServletResponse response){
try{
FileOutputStream out = new FileOutputStream(new File("D:\\excelFormat.xslx"));
workBook.write(out);
out.close();
}
}
这是我的AJAX调用
$.ajax({
url : "${path}/user/customer/scriptTimeCompareReportGenerate",
type : "POST",
dataType : "text",
data : {export_type:exp_Drp_Id,
script_id:scriptChkId,
created_timestamp:timeStamp},
success : function(response){
if (response.length>0){
if (response == "Excel"){
alert("Reports are exported to excel successfully");
} else if (response == "PDF"){
alert("Reports are exported to PDF successfully");
}
} else
alert("Failed to Export");
}
});
我的问题是,在报表保存到D目录之前,它必须提示文件应该保存在哪里。就像enctype=“多部分/表单数据”一样。。需要您的宝贵建议,请对我来说,您的客户机-服务器体系结构似乎不合适。因为您使用的是与客户机和服务器相同的机器,所以您感觉它正在被下载,但实际上您的代码正在服务器的“D-Drive”中生成文件。要在客户端下载文件,您需要做的是: 1) 在服务器端生成文件。
2) 然后,您只需提供指向该文件的链接,就可以从客户端下载该文件。在客户端,您无法生成该文件。因此,您需要做的是,在ajax调用之后,调用writeToExcelReportGeneration()方法,该方法将生成excel文件。现在,在响应中附加文件并将其发送到客户端
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition","attachment;filename=file.xlsx");
FileInputStream in =
new FileInputStream(new File("file.xlsx"));
ServletOutputStream out = response.getOutputStream();
byte[] outputByte = new byte[4096];
while(in.read(outputByte, 0, 4096) != -1){
out.write(outputByte, 0, 4096);
}
in.close();
out.flush();
out.close();
或
将文件夹作为公用文件夹,并在ajax成功后执行另一个ajax调用:
success : function(response){
$.ajax({
url : "/path/to/file.xlsx",
});
}
Shruthi,你能告诉我,你想在ajax调用之前还是在ajax调用之后生成文件…??参见其他注释Hi,尝试过。但我得到的回应是字符串。如果您有任何样品(Spring MVC),请联系我们。让我知道@ShubhasmitTry第二种方法会更简单。