利用jsp导出excel(菜鸟篇)

由于经常到本站找前辈们的资料,觉得非常方便,加上本人记忆力十分差劲,所以今天开博上来保存一些资料,如果恰好有人能用的到希望也能给大家点启发

最近要做报表,导出excel是必须的,所以本人提前准备了一下,本着偷懒的想法(汗~杂说漏了)本人决定用jsp导出 方法2种:

 

 

第一种:poi+jsp导出excel

<%@ page language="java"  contentType="text/html;charset=GBK"%>
<%@ page import = "java.util.*"%>
<jsp:directive.page import="java.text.SimpleDateFormat"/>
<jsp:directive.page import="org.apache.poi.hssf.usermodel.HSSFWorkbook"/>
<jsp:directive.page import="org.apache.poi.hssf.usermodel.HSSFSheet"/>
<jsp:directive.page import="org.apache.poi.hssf.usermodel.HSSFRow"/>
<jsp:directive.page import="org.apache.poi.hssf.usermodel.HSSFCell"/>
<%@ page import="com.test.dto.testDTO"%>

 poi的包不多说了 剩下的就是jsp设置和自己用到的其他包

<%@ page language="java"  contentType="text/html;charset=GBK"%>
<%@ page import = "java.util.*"%>
<jsp:directive.page import="java.text.SimpleDateFormat"/>
<jsp:directive.page import="org.apache.poi.hssf.usermodel.HSSFWorkbook"/>
<jsp:directive.page import="org.apache.poi.hssf.usermodel.HSSFSheet"/>
<jsp:directive.page import="org.apache.poi.hssf.usermodel.HSSFRow"/>
<jsp:directive.page import="org.apache.poi.hssf.usermodel.HSSFCell"/>
<%@ page import="com.test.dto.testDTO"%>
<%
    //设置excel的名字
	String name = "download.xls";
	response.reset();
	response.setContentType("application/download");
	response.setHeader("Content-Disposition", "attachment; filename=" + new String(name.getBytes("gbk"), "iso8859-1"));
	//设置初始行数
	int rownumber = 1;
	//初始化Book
	HSSFWorkbook wb = new HSSFWorkbook();
	//建立个sheet
	HSSFSheet sheet = wb.createSheet("sheet");
	//设置列宽度
	sheet.setColumnWidth((short) 0, (short) 3000); 
	sheet.setColumnWidth((short) 1, (short) 3000);  //想导出几个字段就设置几个
	// 表头信息
	HSSFRow headers = sheet.createRow( (short) 0);
	//建立单元格
	HSSFCell header8 = headers.createCell( (short) 0) ;
	//设置字符集
	header8.setEncoding(HSSFCell.ENCODING_UTF_16);
	//单元格的头名称 类似展现table时的列头
	header8.setCellValue("礼品名称");
	
	HSSFCell header7 = headers.createCell( (short) 1) ;
	header7.setEncoding(HSSFCell.ENCODING_UTF_16);
	header7.setCellValue("礼品价格");
		
	//接受servlet传过来的list
	if(request.getAttribute("list") != null){
		 ArrayList list = (ArrayList)request.getAttribute("list");
		 //遍历
		 for(int i = 0;i < list.size();i ++){
		 	testDTO dto = (testDTO )list.get(i);
		 	//插入数据 创建一行
		 	HSSFRow headers_list = sheet.createRow((short)(rownumber));
		 	//通过遍历把"每一列的" cell填充上自己的数据 需要几个字段就创建几个
		 	HSSFCell header0_list = headers_list.createCell((short)0);
		 	header0_list.setEncoding(HSSFCell.ENCODING_UTF_16);
		 	header0_list.setCellValue(dto.getPartnername());
		 	
		 	HSSFCell header1_list = headers_list.createCell((short)1);
		 	header1_list.setEncoding(HSSFCell.ENCODING_UTF_16);
		 	header1_list.setCellValue(dto.getPetype());
		 	
		 	
				rownumber++;
		 }
		 
	}	 
	wb.write(response.getOutputStream());
	out.clear();
	out = pageContext.pushBody(); 
%>

 

 

 

第二种:纯jsp导出excel(更偷懒)

<%@ page contentType="application/download;charset=GBK"%>
<%@ page import="java.util.ArrayList,java.util.HashMap"%>
<%@ page import="com.test.dto.testDTO"%>
<%
	String name = "download.xls";
	name = new String(name.getBytes("GBK"), "ISO-8859-1");
	response.setHeader("Content-Disposition", "attachment; filename=" + name);
%>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
	<table width="100%" border="1" align="center" cellpadding="0" cellspacing="1" class="con_02">
		<tr>
			<td>
			列1
			</td>
			<td>
			列2
			</td>
			<td>
			列3
			</td>
		</tr>
		<%
         ArrayList list = (ArrayList)request.getAttribute("list");
         if(list.size()>0)
          {
            for(int i = 0; i<list.size();i++)
            {
             testDTO dto1 = (testDTO)list.get(i);
		%>
			<tr>
                         <td><%= dto1.getPartnername()%></td>
                         <td><%= dto1.getPartnername()%></td>
                         <td><%= dto1.getPartnername()%></td>
			</tr>

		<%
		}
	   }
		%>
	</table>
</head>

 

注释不多,但是其实里面别的代码没有,基本就是html组成的table和tr,td什么的,重要的就是头部信息的设置

 

 

 

 

由于本人还属于菜鸟级别,如有错误请大家批评指证,并无写教程的想法,只为记录资料 :)

你可能感兴趣的:(apache,html,jsp,servlet,Excel)