现在的位置: 首页 > 综合 > 正文

Jxls导出excel的若干方式总结(十五)– 简单分析与总结

2017年12月03日 ⁄ 综合 ⁄ 共 1802字 ⁄ 字号 评论关闭

首先对jxls做一个简单介绍,这是一个操作可以excel的开源工具组件包。

             它依赖于POI、Commons BeanUtils、Commons Collections、Commons
JEXL
、Commons Logging、Commons Digester等一些开源工具包。

     通过它所依赖的包明 显可以看到他支持 jexl 和 poi 的所有针对excel操作的功能。

具体细节大家可以去它的官方网站了解,这是它的网站地址http://jxls.sourceforge.net/reference/installation.html。

在jxls工具包开发过程中,始终贯穿着一个主题,那就是excel模板,因此excel模板的设置是开发过程中的一个重点,当然它的各项功能方法也是重要的部分。

因为前面的测试开发过程中,常会用到jdbc的一些操作,因此有必要对jxls常用的jdbc操作封装一个工具类。另外,我们既然已经通过jxls解决了绝大多数的针对excel导出的操作,那么我们也可以将这也方法进行进一步封装,写一个新的工具类。只待以后传参调用即可。就不贴出来了,大家自己写吧。

关于导出时弹出excel另存为的实现方案:

写一个jsp页面如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page language="java" pageEncoding="GBK" contentType="text/html;charset=GBK" isELIgnored="false"%>
<%@ page import="java.io.*, com.adam.dev.utils.GUIDGenerator,org.apache.poi.hssf.usermodel.HSSFWorkbook"%>
<%
		String guid = new GUIDGenerator().getGUID();
		String fileName = guid.substring(0,14)+".xls";
		response.reset();
		response.setCharacterEncoding("GBK");
		response.setContentType("application/vnd.ms-excel");	//设定文件输出类型
		//设定文件展现方式(在线打开【inline】/在线下载【attachment】)
		response.setHeader("Content-Disposition","attachment;filename="+fileName);
		HSSFWorkbook workBook = (HSSFWorkbook)request.getSession().getAttribute("workBook");
		if(workBook!=null && workBook.getBytes().length>0){
			OutputStream os = response.getOutputStream();
			workBook.write(os);
			os.flush();
			os.close();
			out.clear();
			out = pageContext.pushBody();
		}
 %>

其中的GUIDGenerator是我自己写的一个工具类,用于生成全局唯一标识的,其实就是时间与随机数等拼接字符串。这里刚好利用到了而已。

当点击按钮导出excel报表时,通过jquery的ajax中的complete回调函数来触发这个页面对应的action配置路径就会弹出导出另存为的对话框。

这是我的js方法:

	//点击【打印]】按钮
	$('#btnPrint').click(function(){
		var url="../subCompany/exportExcel.do";
		//alert(url);
		$.ajax({
			url:url,
			//完成后跳转的页面
			complete:function(){
				//location.href ="../subCompany/doListQuery.do";
				self.location.href="../powerStation/generatorIframe.do";
			}
		});		
	});

大家看看效果:

导出结果:

抱歉!评论已关闭.