AJAX function clickbtnmakeExcel()
{
var uri= "GeneratePreCard";
xmlrequest.open("POST", uri, true);
xmlrequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
xmlrequest.send(null);
}SERVLET protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("UTF-8");
HSSFWorkbook wbook = new HSSFWorkbook();
HSSFSheet sheet = wbook.createSheet("new sheet");
sheet.setDefaultColumnWidth((short)18);
HSSFRow row= sheet.createRow((short)0);
HSSFCell cell= row.createCell((short)0);
cell.setCellValue("卡的信息");
sheet.addMergedRegion(new Region(0,(short)0,1,(short)4));
row= sheet.createRow((short)2);
row.createCell((short)0).setCellValue("序 号");
row.createCell((short)1).setCellValue("序列号");
row.createCell((short)2).setCellValue("卡 号");
row.createCell((short)3).setCellValue("主持人密码");
row.createCell((short)4).setCellValue("会员密码");
OutputStream out = response.getOutputStream();
wbook.write(out);
out.close();
}
用ajax发送的请求 到服务端,服务端用的servlet处理的。(想直接生成Excel文件到客户端)调试过了,生成的文件没问题,就是没反应,没返回?
望高手解惑!
{
var uri= "GeneratePreCard";
xmlrequest.open("POST", uri, true);
xmlrequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
xmlrequest.send(null);
}SERVLET protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("UTF-8");
HSSFWorkbook wbook = new HSSFWorkbook();
HSSFSheet sheet = wbook.createSheet("new sheet");
sheet.setDefaultColumnWidth((short)18);
HSSFRow row= sheet.createRow((short)0);
HSSFCell cell= row.createCell((short)0);
cell.setCellValue("卡的信息");
sheet.addMergedRegion(new Region(0,(short)0,1,(short)4));
row= sheet.createRow((short)2);
row.createCell((short)0).setCellValue("序 号");
row.createCell((short)1).setCellValue("序列号");
row.createCell((short)2).setCellValue("卡 号");
row.createCell((short)3).setCellValue("主持人密码");
row.createCell((short)4).setCellValue("会员密码");
OutputStream out = response.getOutputStream();
wbook.write(out);
out.close();
}
用ajax发送的请求 到服务端,服务端用的servlet处理的。(想直接生成Excel文件到客户端)调试过了,生成的文件没问题,就是没反应,没返回?
望高手解惑!
你也说了,text和xml文件好做,那么我们用text为例,假设你的servlet返回了"abc"三个字母,你的页面会刷新成只有"abc"吗?
肯定不会,如果你不用javascript处理response中的"abc",则什么也不会发生。就跟你现在的excel文件一样
wbook.write(out);
out.print("???");
out.close();
<script type="text/javascript">
var xmlHttp = null;
function createXMLHttpRequest(){
if(window.ActiveXObject){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}
}
function change(){
createXMLHttpRequest();
var url = "/AjaxServlet?" + Math.random(); //你的servlet
xmlHttp.onreadystatechange = callback;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}
function callback(){
if (xmlHttp.readyState == 4){
if (xmlHttp.status == 200){
var str=xmlHttp.responseText;//后台返回的数据
div1.innerHTML = str;
}
}
}
</script> <body onload="init()">
<div id="div1"></div>
</body>后台:
PrintWriter out = response.getWriter();
out.println("你在前台输出的数据!");
out.flush();
out.close();
public void WriteInReportByResponse(HttpServletResponse response, HSSFWorkbook wb)
{
try {
OutputStream op = response.getOutputStream();
wb.write(op);
op.flush();
op.close();
} catch (IOException e) {
log.error(e.getMessage());
}
}