加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax + servlet + poi 导出Excel

发布时间:2020-12-16 03:24:54 所属栏目:百科 来源:网络整理
导读:js代码 $(document).ready(function(){$("#btn_export").click(function(){var area = $("#s-area option:selected").text();/ar b_s_num = $("#b_s_num option:selected").text();var bill_state = $("#bill_state option:selected").text();var remarks =

js代码

$(document).ready(function(){
	$("#btn_export").click(function(){
		var area = $("#s-area option:selected").text();
		/ar b_s_num = $("#b_s_num option:selected").text();
		var bill_state = $("#bill_state option:selected").text();
		var remarks = $("#remarks option:selected").text();
		window.location.href="ExportConfirmBill";
		/*$.ajax({
			url:'ExportConfirmBill',type:'post',data:{'area':area,'bill_state':bill_state,'remarks':remarks},success:function(data){
				window.open('ExportConfirmBill');
			}
		})*/
	})
});

后端servlet代码
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
		// TODO Auto-generated method stub
		response.setContentType("octets/stream");
		List<String> columns = new ArrayList<String>();
		List<Object> confirm_bill_lst = new ArrayList<Object>();
		String excelName = "账单信息";
		response.addHeader("Content-Disposition","attachment;filename=" + new String(excelName.getBytes("gb2312"),"ISO8859-1") + ".xls");
		ServletOutputStream out = response.getOutputStream();
		HSSFWorkbook wb = new HSSFWorkbook();
		HSSFSheet sheet = wb.createSheet();
		HSSFRow row1 = sheet.createRow(0);
		BillManage bm = new BillManageImpl();
		columns = bm.getColumns();
		for(int i=0;i<columns.size()-1;i++){
			HSSFCell cell =row1.createCell(i);
			cell.setCellValue(columns.get(i+1));
		}
		String area = request.getParameter("area");
		String bill_state = request.getParameter("bill_state");
		String remarks = request.getParameter("remarks");
		System.out.println(bill_state);
		confirm_bill_lst = bm.exportConfirmBill(area,bill_state,remarks);
		for(int i=0;i<confirm_bill_lst.size();i++){
			List<Object> lst =(List<Object>) confirm_bill_lst.get(i);
			HSSFRow row = sheet.createRow(i+1);
			for(int j=0;j<lst.size();j++){
				Cell cell = row.createCell(j);
				if(lst.get(j)==null){
					cell.setCellValue("");
				}else{
					cell.setCellValue(String.valueOf(lst.get(j)));
				}
			}
		}
		wb.write(out);
		out.close();
		wb.close();
	}
第一次,采用ajax的方式,发送请求并传递相应的参数时,后台获取了的数据并且利用POI接口类将数据填充到Excel,但是前台客户端并没有出现下载提示的窗口,导出Excel失败。

第二次,采用提交表单的方式,直接请求,导出成功。

经过百度,才知道

ajax返回的类型只有xml、text、json、HTML等类型,没有流类型,因此不会弹出下载提示框。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读