`
desert3
  • 浏览: 2159450 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Jsp Excel导出功能(其他语言类似)

    博客分类:
  • Java
阅读更多
Jsp页面表格内容Excel导出功能
(不使用IE的ActiveX,同时不需要为了添加Excel导出操作而增加多少工作量)

已经查询出来的表格导出
前台:
导出内容
<div id="divExcel" fileName="文件名 -${year}年${province}${city}${country}(${type_name}).xls">
导出内容
</div>

导出脚本
<script type="text/javascript">//<![CDATA[
function excel(divId, path){	
	divId = divId || "divExcel";
	path  = path  || "";
	
	var divExcel = document.getElementById(divId);
	
	var formToPrint = document.createElement("form");
	var hiddenHtml = document.createElement("input");
	hiddenHtml.type = "hidden";
	hiddenHtml.name = "hiddenHtml";
	hiddenHtml.value = divExcel.innerHTML;
	formToPrint.appendChild(hiddenHtml);
	
	var hiddenName = document.createElement("input");
	hiddenName.type = "hidden";
	hiddenName.name = "hiddenName";
	hiddenName.value = divExcel.fileName;
	formToPrint.appendChild(hiddenName);
	
	document.body.appendChild(formToPrint);
	formToPrint.method = "post";
	formToPrint.action = path;
	//formToPrint.target = "_blank";
	formToPrint.submit();
}
//]]>--></script>

导出按钮
<html:button property="toExcel" onclick="excel('divExcel','XXXAction.do?method=toExcel')" value="导出到Excel" />


后台:
public ActionForward toExcel(ActionMapping mapping, ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		super.renderExcel(request, response);
		return null;
	}

	protected void renderExcel(HttpServletRequest request, HttpServletResponse response) throws IOException {
	    String hiddenHtml = StringUtils.lowerCase(request.getParameter("hiddenHtml"));

	    hiddenHtml = StringUtils.replace(hiddenHtml, "border=0", "border=1");
	    hiddenHtml = StringUtils.replace(hiddenHtml, "border=\"0\"", "border=\"1\"");

	    String fname = EncryptUtils.encodingFileName(request.getParameter("hiddenName"));

	    response.setCharacterEncoding("UTF-8");
	    response.setContentType("application/octet-stream");
	    response.setHeader("Content-Disposition", "attachment;filename=" + fname);

	    PrintWriter out = response.getWriter();
	    out.println(hiddenHtml);

	    out.flush();
	    out.close();
	  }

	public static String encodingFileName(String fileName) {
		String returnFileName = "";
		try {
			returnFileName = URLEncoder.encode(fileName, "UTF-8");
			returnFileName = StringUtils.replace(returnFileName, "+", "%20");

			returnFileName = new String(fileName.getBytes("GB2312"), "ISO8859-1");
			returnFileName = StringUtils.replace(returnFileName, " ", "%20");

		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return returnFileName;
	}


没有查询出来的不分页的数据导出:
前台:
<html-el:button property="toExcle" styleId="toExcle" value="导 出" onclick="" />
根据要导出的数据做成不可见的虚拟表格
<div id="divExcelHide" title="B2B销售数据统计" style="display:none;">
      <table width="100%" border="0" align="left" cellpadding="0" cellspacing="1">
        <tr>
          <td colspan="7" align="center"><span style="font-weight:700;font-size:13px">B2B销售数据统计</span></td>
        </tr>
        <tr>
          <th  nowrap="nowrap">订单序号</th>
          <th  nowrap="nowrap">网点名称</th>
          <th nowrap="nowrap">所在区域</th>
          <th  nowrap="nowrap" >下单时间</th>
          <th  nowrap="nowrap">企业名称</th>
          <th  nowrap="nowrap">产品名称</th>
          <th nowrap="nowrap">产品数量</th>
          <th nowrap="nowrap">单价</th>
          <th nowrap="nowrap">总价</th>
        </tr>
        <tbody id="exportData">
        </tbody>
        <tr id="exportDataTR" style="display:none;">
          <td align="left" nowrap="nowrap"></td>
          <td align="left" nowrap="nowrap"></td>
          <td align="left" nowrap="nowrap"></td>
          <td align="left" nowrap="nowrap"></td>
          <td align="left" nowrap="nowrap"></td>
          <td align="left" nowrap="nowrap"></td>
          <td align="left" nowrap="nowrap"></td>
          <td align="left" nowrap="nowrap"></td>
          <td align="left" nowrap="nowrap"></td>
        </tr>
      </table>
    </div> 

导出脚本:
	$("#toExcle").click(function(){
		$.ajax({
			type: "POST",
			url: "SalesStat.do?method=exportToExcel",
			data: "exportExcel=1&" + $("#bottomPageForm").serialize(),
			dataType: "json",
			error: function(request, settings) {alert("数据导出失败!");},
			success: function(returnDataArray) {
				$("#exportData").empty();
				$exportData = $("#exportData");
				$exportDataTR = $("#exportDataTR");
				for (var i = 0; i < returnDataArray.list.length; i++) {
					var cur = returnDataArray.list[i];
					$newTR_TD = $exportDataTR.clone().css("display","").appendTo($exportData).children();
					$newTR_TD.eq(0).text("=\""+cur.trade_index+"\"");
					$newTR_TD.eq(1).text(cur.shop_name);
					$newTR_TD.eq(2).text(cur.p_name);
					$newTR_TD.eq(3).text(cur.add_date);
					$newTR_TD.eq(4).text(cur.entp_name);
					$newTR_TD.eq(5).text(cur.md_name);
					$newTR_TD.eq(6).text(cur.order_num);
					$newTR_TD.eq(7).text(cur.price);
					$newTR_TD.eq(8).text(cur.money);
				}
				toExcel('divExcelHide', 'SalesStat.do?method=toExcel');
			}
		});
	});


后台:

	private final String date_pattern = "yyyy-MM-dd HH:mm:ss";

	public ActionForward exportToExcel(ActionMapping mapping, ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws Exception {

		DynaBean dynaBean = (DynaBean) form;
		String exportExcel = (String) dynaBean.get("exportExcel");
		if (StringUtils.isNotBlank(exportExcel) && "1".equals(exportExcel)) {

			OrderInfo entity = new OrderInfo();
			String province = (String) dynaBean.get("province");
			String city = (String) dynaBean.get("city");
			String country = (String) dynaBean.get("country");
			String trade_index = (String) dynaBean.get("trade_index");
			String p_index = "";

			String add_date_begin = (String) dynaBean.get("add_date_begin");
			String add_date_end = (String) dynaBean.get("add_date_end");

			String shop_name = (String) dynaBean.get("shop_name");

			if (StringUtils.isNotBlank(country)) {
				p_index = country;
			} else if (StringUtils.isNotBlank(city)) {
				p_index = city;
			} else {
				p_index = province;
			}
			entity.getMap().put("p_index", p_index);
			// 5:已结束
			String[] default_state = { "5" };
			entity.getMap().put("default_state", default_state);

			if (StringUtils.isNotBlank(trade_index)) {
				entity.getMap().put("trade_index", trade_index);
			}

			DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
			if (StringUtils.isNotBlank(add_date_begin)) {
				entity.getMap().put("add_date_begin", format.parse(add_date_begin));
			}
			if (StringUtils.isNotBlank(add_date_end)) {
				entity.getMap().put("add_date_end", format.parse(add_date_end));
			}

			if (StringUtils.isNotBlank(shop_name)) {
				entity.getMap().put("shop_name_like", shop_name);
			}

			// 所有B2B订单相关业务都需要追加的查询条件:SALES_MODEL销售模式:0:B2B
			entity.setSales_model(0);
			entity.getRow().setFirst(0);
// 最大导出500行记录的数据
			entity.getRow().setCount(500);
			List<OrderInfo> entityList = super.getFacade().getOrderInfoService()
					.getOrderInfoForEntpList(entity);
			JSONObject result = new JSONObject();
			JSONArray list = new JSONArray();
			for (int i = 0; i < entityList.size(); i++) {
				JSONObject obj = new JSONObject();
				OrderInfo cur = entityList.get(i);
				obj.put("trade_index", cur.getTrade_index());
				obj.put("shop_name", cur.getMap().get("shop_name"));
				obj.put("p_name", cur.getMap().get("p_name"));
				if (cur.getAdd_date() != null) {
					obj.put("add_date", DateFormatUtils.format(cur.getAdd_date(), date_pattern));
				}
				obj.put("entp_name", cur.getMap().get("entp_name"));
				obj.put("md_name", cur.getMap().get("md_name"));
				obj.put("order_num", cur.getOrder_num());
				obj.put("price", cur.getMap().get("price"));
				obj.put("money", cur.getMoney());
				list.put(obj);
			}
			result.put("list", list);
			logger.info(result.toString());
			super.render(response, result.toString(), "text/x-json;charset=UTF-8");
			return null;
		}
		return null;
	}

	public ActionForward toExcel(ActionMapping mapping, ActionForm form, HttpServletRequest request,
			HttpServletResponse response) {

		response.setCharacterEncoding("utf-8");

		String name = request.getParameter("hiddenName");
		String html = request.getParameter("hiddenHtml");

		try {
			response.setContentType("application/vnd.ms-excel");

			response.addHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode(name, "UTF-8")
					+ ".xls\"");

			// response.setContentType("text/plain");
			// response.addHeader("Content-Disposition",
			// "attachment; filename=\"" + URLEncoder.encode(name, "UTF-8")
			// + ".csv\"");

			// response.setContentType("application/vnd.ms-word");
			// response.addHeader("Content-Disposition",
			// "attachment; filename=\"" + URLEncoder.encode(name, "UTF-8")
			// + ".doc\"");

			PrintWriter out = response.getWriter();

			out
					.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
			out.println("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
			out.println("<head>");
			out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />");
			out.println("<meta http-equiv=\"MSThemeCompatible\" content=\"no\" />");
			out.println("<meta name=\"MSSmartTagsPreventParsing\" content=\"true\" />");
			out.println("<title>" + name + "</title>");
			out.println("</head>");

			html = html.replace("border=0", "border=1");
			// html = html.replace("<A href=\"[^>]*?\">([^<]*?)<\/A>", "$1");

			out.println(html);

			out.println("</body>");
			out.println("</html>");
			out.println("<body>");
		} catch (Exception e) {
			e.printStackTrace();
		}

		return null;
	}

分享到:
评论
2 楼 itabclichao 2013-08-29  
搞起,顶一个
1 楼 itabclichao 2013-08-29  
顶一个,帮我大忙了

相关推荐

    导出jsp页面为excel文档

    ### 如何在JSP中将页面内容导出为Excel文档 ...综上所述,通过简单的代码配置即可实现将JSP页面内容以Excel形式导出的功能。这种方式适用于简单的数据导出场景,对于复杂需求则需考虑引入更多技术支持。

    在JSP中导出pdf和excel.pdf

    在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而导出PDF和Excel文件是常见的需求,比如为了报表或数据分析。在本文中,我们将深入探讨如何在JSP环境中实现这一功能。 首先,我们需要...

    jxls使用模板实现导出excel!

    Java编程语言在处理数据导出,特别是在生成Excel文件时,提供了多种库,其中之一就是jxls。jxls是一个强大的工具,它允许我们使用Apache POI库的功能,但通过使用JSP标签和简单的模板来简化Excel文件的创建过程。...

    Java导出excel

    本案例通过JSP页面实现了从表单参数获取数据并将其导出至Excel文件的功能。接下来将对这段代码进行逐行分析: 1. **页面配置**: ```jsp ;charset=gb2312" %&gt; ``` 这段配置指定了页面的脚本语言为Java,并设置...

    js导出excel

    本文将详细介绍如何使用JavaScript(js)和JXL库来实现从JSP页面的table表格导出到Excel,同时确保兼容所有浏览器以及处理复杂的table布局。 首先,让我们了解关键知识点: 1. **JavaScript (js)**:JavaScript是...

    jxl模版生成excel

    JExcelAPI是一个开源项目,允许程序开发者读写Microsoft Excel文件,它支持从Java数据结构直接导出到Excel格式,同时也可读取Excel数据并转换为Java对象。 **描述解析:** 描述中提到的"采用类似EL表达式的方式...

    jxls-导入导出-java

    `jxls`扩展了POI的功能,使得我们可以使用类似于JSP的语法来定义Excel模板,然后通过Java代码动态填充这些模板,生成复杂的Excel表格。 在"jxls例子"中,我们可以看到如何利用`jxls`进行实际操作。首先,你需要创建...

    flex导出csv文件

    在Flex中,我们可能需要将数据导出为CSV(逗号分隔值)格式,以便用户能够轻松地处理和导入到其他应用程序,如电子表格软件如Microsoft Excel。CSV文件是一种通用的数据交换格式,因其简洁性和广泛兼容性而被广泛...

    jxls生成并导出excel所需jar包

    通过使用`jxls`,你可以用类似于JSP语法的方式来定义Excel模板,然后在运行时用Java对象的数据填充这些模板,实现动态生成Excel文件。这极大地简化了代码,提高了开发效率。 1. **jxls库**:`jxls-1.0.5.zip`是`...

    gestion-stock_1_18658_jsp_

    6. **Excel数据处理**:"gestionstock23.xls" 文件可能涉及到Excel读写操作,这通常通过Apache POI库或其他类似的库来实现,用于在JSP应用中导入或导出库存数据。 7. **Web安全**:考虑库存管理系统的敏感性,了解...

    word__xls文件导出

    导出xls文件的过程与word类似,但`Content-Type`应设置为`application/vnd.ms-excel`。同样地,文件名也需要进行URL编码处理。 ```java response.setContentType("application/vnd.ms-excel;charset=utf-8"); ...

    利用JAVA操作EXCEL文件.pdf

    如果遇到其他类型,则可以按照类似的方式进行处理。 随后,文档又展示了如何使用jxl库将数据写入Excel文件。这涉及到创建一个可写的Excel工作簿、创建工作表以及向工作表中添加各种类型的单元格(如文本、数值等)...

    word导入sql

    文件内容还提供了类似的技术实现,只不过这次是将JSP页面的数据导出到Excel中。JavaScript函数AutomateExcel展示了通过创建Excel应用程序的实例,复制页面中的表格数据,并将其粘贴到Excel工作表中。 4. HTML页面中...

    jxl.jar ,jspupload.jar,classes12.jar,poi-2[1].5.1-final-20040804.jar

    和jxl.jar类似,它允许开发者在Java程序中创建、修改Excel文件,但POI支持的版本和功能更为广泛,包括较新的Excel格式(.xlsx)。由于其强大的功能和社区支持,Apache POI被广泛应用于数据分析、报告生成、自动化...

    java,jsp课程设计报告(网络购物车的实现).docx

    - `write.excel.java` 实现将购物车信息写入Excel文件,可能使用了Apache POI库或其他类似的库来处理Excel文件格式。 8. **安全与优化**: - 在实际应用中,需要考虑安全性,如防止SQL注入、XSS攻击等。 - 优化...

    excel模板所需jar:commons-jexl-2.1.1.jar 和 jxls-core1.0.3.jar

    这个库使得开发者可以使用类似于JSP的语法在Excel模板中定义动态区域,从而简化了复杂的数据导出任务。`jxls`的核心思想是将Excel模板视为一个视图层,通过解析模板上的指令与Java代码交互,实现数据的动态绑定。 `...

    jsp+mysql的化工通用软件介绍

    自己完成类似水晶报表的图标功能,可导出excel报表,可自动设计网上设计报表格式,克服水晶报表的缺点。样品条目,格式,计算公式全可以自动网上设计,不需要一起的编程,全自动化,源码1000块钱可以卖出。

    官方jxls-2.4.1

    1. **模板语法**:Jxls使用一种类似于JSP的简单模板语法,允许在Excel中插入Java表达式和控制结构。例如,`&lt;jx:each&gt;`标签可以用来迭代Java集合中的元素,将它们填充到对应的单元格中。 2. **数据绑定**:通过AOP...

Global site tag (gtag.js) - Google Analytics