使用jsp导出到excel汇总(jxl)

200使用jsp导出到excel汇总(jxl)
设置excel的导出格式
因为ms word和excel的文档都支持html文本格式,因此可以先用word或excel做好模版,另存为Web页,然后将该html改成jsp,将数据部分动态填入即可,不用很辛苦的调整格式

word页面只要在jsp头设置如下指令:
<%@page contentType="application/msword;charset=GBK" %>

excel如下:
<%@page contentType="application/vnd.ms-excel;charset=GBK" %>


使用这种方式客户端必须安装有office软件,用户访问时将在ie中直接用word或excel打开该页面。

此方法优势是模板设计、调整方便,无需在服务器端使用复杂的POI或jxl技术,也无需在客户端使用ActiveX控件技术,更安全、方便,轻松实现较好的打印效果。看前面文章1. 在Word或Excel中制作报表的样式。 1


Excel的行高和列宽单位无法用mm或cm表示。

需要计算。在1024*768下,1CM约为38像素。

以此为基准,可计算并控制报表的行列位置。

2. 在Word中设置“表格——标题行重复”。 字串6

在Excel中设置“文件——页面设置——工作表——打印标题”。

3. 另存为网页,改后缀名“htm”为“jsp”。

4. Word报表文件头为: 字串2

<%@page contentType="application/msword;charset=GBK" language="java"%>

Excel报表文件头为:


<% @page contentType="application/vnd.ms-excel;charset=GBK" language="java"%>


5. 在文件头部分定义打印参数变量如下(以Excel为例):


<%


//需要打印的记录条数
int PrintRowCount=RowCount; 字串9

//每页打印的记录条数
int PageRowCount=16; 字串1

//最后一页需要打印的空行的数目
int LoopNum=PageRowCount-PrintRowCount%PageRowCount; 字串3

//打印区域的高度,其中2的意思是每页需要重复的标题行的数目
int PrintAreaHeight=(PrintRowCount%PageRowCount==0)?PrintRowCount 2:PrintRowCount LoopNum 2; 字串5

%>

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


jsp导出Excel在开发MIS系统的过程中,客户经常会提出这样的要求:将查询结果导出为Excel文件保存下来。经常是写一次就忘一次,因此决定今天将以前的代码和遇到的问题进行一下总结,下面进入正题。

背景:本例的代码来源于我给学校开发的一个奖学金管理系统,使用者在前台设置一组查询条件之后,点击“导出”按钮即可得到Excel文件了。

目的:得到一个Excel文件,包括姓名、学号、奖项类别、所在院系、年级、学生类别、银行卡号、金额等内容项

文件:export.jsp(前台页面,指定搜索条件)、exporting.jsp(后台页面,export.jsp的action)、ExportExcel.java(javabean文件,负责具体的操作)、Dbase.java(javabean文件,负责数据库操作)

代码:

export.jsp:此代码略去,主要是指定搜索条件

exporting.jsp:

<%@ page contentType="text/html;

charset=gb2312" language="java" import="java.sql.*,DBCon.*" errorPage="" %>

<jsp:useBean id="excel" scope="request" class="DBCon.ExportExcel"/>

<jsp:useBean id="dbase" scope="request" class="DBCon.Dbase"/>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>无标题文档</title>

</head>

<%

String user=(String)session.getAttribute("c_name");//登陆名

String sql="";

String colleage=request.getParameter("colleage");//从export.jsp页面获得

String type=request.getParameter("burseType");//从export.jsp页面获得

String studType=request.getParameter("studType");//从export.jsp页面获得

studType=new String(studType.getBytes("ISO8859_1"),"GBK");

String grade=request.getParameter("studGrade");//从export.jsp页面获得

String title=request.getParameter("title");//从export.jsp页面获得

title=dbase.toChinese(title);

//下面将得到sql语句,与本例业务逻辑相关,无需明白

if(user.equals("ygb"))//研工部用户登陆

sql="select * from master_burse where college like '%"+colleage+"%' and code like '%"+type+"%' and grade like '%"+grade+"%' and type like '%"+studType+"%' and flag1='1'";

else//院系用户登陆

        sql="select * from master_burse where college like '%"+colleage+"%' and code like '%"+type+"%' and grade like '%"+grade+"%' and type like '%"+studType+"%'";

response.reset();

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

excel.export(response.getOutputStream(),sql);

//if(excel.export(sql,title,request,application))

    //out.println("<a href='"+request.getContextPath()+"/"+GetSysTime.getDay()+".xls' target='blank' >"+"下载"+title+"</a>"+"(右键单击另存为)");

//else{             

%>

<!-- <script language="JavaScript" type="text/javascript">

alert("导出失败");

history.go(-1);

</script> -->

<%// } %>

<body>

</body>

</html>

你可能感兴趣的:(sql,jsp,Excel,IE,Office)