用jxl 从jsp页面导出数据到excel表格并下载保存

用jxl生成Excel其实挺简单,只需声明三个变量:WritableWorkbook,WritableSheet,Label。
其中WritableWorkbook表示要生成的整个Excel文档,
WritableSheet表示每个单元页,在excel文档的左下角不是可以创建多个页面吗,
WritableSheet表示的即是这个。
Label表示的就是里面的每个单元格了。

一个完整实例如下:(只需把jxl.jar引入工程就行了)

下面的方法是借鉴网上的方法,修改了一下

(1)excelExportTest.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>导出excel表格</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<script type="text/javascript">
   			function hpExport(obj){
     		obj.href = "excelExport.jsp";
   			return true;
  }
</script>
  </head>
  
  <body>
     <a href="#" id="hpExport" onClick="return hpExport(this)">导出数据</a>
  </body>
</html>
(2)excelExport.jsp
<%@ page language="java"
	import="java.util.*,java.io.*,jxl.write.WritableWorkbook,jxl.Workbook,jxl.write.WritableSheet,jxl.write.Label"
	pageEncoding="UTF-8"%>
<%
	try {
		String city = "北京市";
		String grade = "成绩";

		response.setContentType("application/vnd.ms-excel"); //保证不乱码

		String fileName = city + "excel表格数据.xls";
		/* //到第一个值项是attachment,这是真正的关键,设定了这个值,浏览器就会老老实实地显示另存为对话框,如果这个值设成 inline,则无论怎样浏览器都会自动尝试用已知关联的程序打开文件。
		response.addHeader("Content-Disposition","attachment; filename=\""+ new String(fileName.getBytes("gb2312"),"iso8859-1") + "\""); */
		
		response.setHeader("Content-Disposition", "attachment;"
				+ " filename="
				+ new String(fileName.getBytes(), "ISO-8859-1"));
		OutputStream os = response.getOutputStream();
		out.clear();
		out = pageContext.pushBody(); //这2句一定要,不然会报错。
		// 新建excel的工作薄文件
		WritableWorkbook book = Workbook.createWorkbook(os);
		// 生成名为"第一页"的工作表,参数0表示这是第一页
		WritableSheet sheet1 = book.createSheet("第一页", 0);
		/***********start第一行(各个列的标题)************/
		//第一列第一行(0,0)
		Label label1 = new Label(0, 0, "名字");
		// 将定义好的单元格添加到工作表中
		sheet1.addCell(label1);
		//第二列第一行
		Label label2 = new Label(1, 0, "性别");
		sheet1.addCell(label2);
		//第三列第一行
		Label label3 = new Label(2, 0, "年龄");
		sheet1.addCell(label3);
	    /***********end第一行(各个列的标题)************/
		for(int i=1; i<=50; i++){	//控制行数(从第二行开始)
				for(int j=0 ;j<3 ;j++) { //控制列数
					if(j==0) {
						Label label = new Label(j, i, "zp");
						sheet1.addCell(label);
					}
					if(j==1) {
						Label label = new Label(j, i, "男");
						sheet1.addCell(label);
					}
					if(j==2) {
						Label label = new Label(j, i, "23");
						sheet1.addCell(label);
					}		
				}		
		}	
		// 写入数据并关闭文件
		book.write();
		book.close();
		os.close();

	} catch (Exception e) {
		System.out.println("生成信息表(Excel格式)时出错:");
		e.printStackTrace();
	}
%>



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值