java-導出excel並解決亂碼問題

技術 struts2+easyui(參考,主要解決編碼和excel導出問題)

表單的設置

<form id="form1" name="form1" method="post"  accept-charset="GBK" onsubmit="if(!!window.ActiveXObject){document.charset='GBK';}"  ></form>


js代碼

 //彈框式導出到Excel表中
	 function exportExcel(){
		var gs = $('#gs').combobox('getValue');
		var ssjd = $('#jd').combobox('getValue');
		var number = $("#number").val();
		var name = $("#name").val();
<%--方法一--%>
<%--		//alert("查詢條件:歸屬:"+gs+",街道:"+ssjd+",編號:"+number+",姓名:"+name);--%>
<%--		form1.action='/mzj/zjgl/exportExcel.action?rygs='+gs+'&ssjd='+ssjd+'&rybh='+number+'&name='+name,--%>
<%--		form1.submit();--%>
<%--方二--%>
<%--		--%>
<%--		 $.ajax({  --%>
<%--			contentType : "application/json",--%>
<%--			url:'/mzj/zjgl/exportExcel.action?rygs='+gs+'&ssjd='+ssjd+'&rybh='+number+'&name='+name,--%>
<%--			type:"post",--%>
<%--			dataType:"json",--%>
<%--			async:false,--%>
<%--			success:function(data) --%>
<%--			{--%>
<%--			},--%>
<%--		 	error : function() {  --%>
<%--                alert("導出失敗");  --%>
<%--			}--%>
<%--		});--%>
<%--方三--%>		 
<%--		 jQuery("form")//選擇form    --%>
<%--		 .first()//選擇第一個 第二個用eq(1) 最後一個 last()    --%>
<%--		 .attr("action",'/mzj/zjgl/exportExcel.action?rygs='+gs+'&ssjd='+ssjd+'&rybh='+number+'&name='+name)//更改屬性    --%>
<%--		 .submit();//提交--%>
<%--同方三--%>		 
		    var url='/mzj/zjgl/exportExcel.action?rygs='+gs+'&ssjd='+ssjd+'&rybh='+number+'&name='+name; 
			$("#form1").attr("action",url); 
			$("#form1").submit(); 
		 
	 }


後臺代碼

// 彈出式導出Excel文件
	public void exportExcel() {
		HttpServletResponse response = this.getResponse();
//		response.setContentType("application/vnd.ms-excel; charset=UTF-8");
		response.setContentType("application/vnd.ms-excel;");
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
		Date date = new Date();
		String fileName = sdf.format(date);
		response.setHeader("Content-Disposition", "attachment;filename="
				+ fileName + ".xls");
		
		// ******************************************集合
		String sort = this.getRequest().getParameter("sort");
		String order = this.getRequest().getParameter("order");
		String rygs = this.getRequest().getParameter("rygs");
		String ssjd = this.getRequest().getParameter("ssjd");
		String rybh = this.getRequest().getParameter("rybh");
		String name = this.getRequest().getParameter("name");
		// 查詢條件
		StringBuffer contions = new StringBuffer();
		if (null != rygs && !"".equals(rygs)) {
			contions.append(" and ").append(" CZ_RYGS='").append(rygs)
					.append("' ");
		}
		if (null != ssjd && !"".equals(ssjd)) {
			contions.append(" and ").append(" CZ_SSJD='").append(ssjd)
					.append("' ");
		}
		if (null != rybh && !"".equals(rybh)) {
			contions.append(" and ").append(" CZ_NUMBER = '").append(rybh)
					.append("' ");
		}
		if (null != name && !"".equals(name)) {
			contions.append(" and ").append(" CZ_NAME like '%")
					.append(name).append("%' ");
		}
		Map map = new HashMap();
		if (sort == null || order == null) {
			map.put("sort", "rygs");
			map.put("order", "asc");
		} else {
			map.put("sort", sort);
			map.put("order", order);
		}
		map.put("contions", contions.toString());

		CaptialService capitalService = new CaptialService();

		long time1 = new Date().getTime();
		System.out.println("開始時間:"+new Date());
		//寫入Excel的數據list
		List<CzzjInfo> list = capitalService.findAll(map);
		//List<CzzjInfo> list=new ArrayList<CzzjInfo>();
		System.out.println("結束時間:"+new Date());
		//數據列名
		String[] headers = { "序號", "人員歸屬", "所屬街道", "編號", "姓名", "商保(元)",
				"商保補差(元)", "區補(元)", "生補(元)", "開戶銀行", "卡號" };
		//寫入Excel
		try {
			HSSFWorkbook wb = new HSSFWorkbook();
			HSSFSheet sheet = wb.createSheet("sheet_1");
			sheet.setDefaultColumnWidth((short) 15);
			//設置格式
			int iFontSize = 12;
			String sFontname = "宋體";

			HSSFFont Headfont = wb.createFont();
			Headfont.setFontHeightInPoints((short) iFontSize); // 表頭字體大小
			Headfont.setFontName(sFontname); // 表頭字體名稱
			Headfont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 表頭字體加粗

			HSSFCellStyle HeadStyle = wb.createCellStyle(); // 表頭格式
			HeadStyle.setFont(Headfont); // 表頭字體
			HeadStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 表頭位置
			
			HSSFFont bodyfont = wb.createFont();
			bodyfont.setFontHeightInPoints((short) 10); // 字體大小
			bodyfont.setFontName(sFontname); // 字體名稱
			bodyfont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); // 字體加粗
			HSSFCellStyle bodyStyle = wb.createCellStyle(); // 格式
			bodyStyle.setFont(bodyfont); // 字體
			bodyStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 位置
			
			
			int i = 0;
			while (i <= list.size()) {
				HSSFRow row = sheet.createRow(i);
				if (i == 0) {
					for (int j = 0; j < headers.length; j++) {
						HSSFCell cell = row.createCell((short) j);
						cell.setCellStyle(HeadStyle);
						cell.setCellValue(headers[j]);
					}
				} else {
					CzzjInfo cz = list.get(i-1);
					HSSFCell cell = row.createCell((short) 0);
					cell.setCellStyle(bodyStyle);
					cell.setCellValue(i);
					cell = row.createCell((short) 1);
					cell.setCellValue(cz.getRygs());
					cell = row.createCell((short) 2);
					cell.setCellValue(cz.getSsjd());
					cell = row.createCell((short) 3);
					cell.setCellValue(cz.getBh());
					cell = row.createCell((short) 4);
					cell.setCellValue(cz.getXm());
					cell = row.createCell((short) 5);
					cell.setCellValue(cz.getSbs());
					cell = row.createCell((short) 6);
					cell.setCellValue(cz.getSbbcs());
					cell = row.createCell((short) 7);
					cell.setCellValue(cz.getQbs());
					cell = row.createCell((short) 8);
					cell.setCellValue(cz.getSbs());
					cell = row.createCell((short) 9);
					cell.setCellValue(cz.getKhyh());
					cell = row.createCell((short) 10);
					cell.setCellValue(cz.getKh());
					
	
				}
				i++;
			}

			java.io.OutputStream out = response.getOutputStream();
			wb.write(out);
			out.close();
		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章