- 浏览: 601572 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
-
wzh051527:
我是大四实习生一个,自我感觉技术能力在第三年。。唯一不明白,为 ...
十年技术,不要再迷茫 -
room_bb:
.hrl文件怎么加入到编译规则里面?比如:pp.hrl文件-d ...
Erlang中用的makefile的一点解释 -
吉米家:
感觉帆软报表的flash打印就很不错哇,特别好用
JSP 实现报表打印 -
雪碧爱芬达:
苦逼程序员的辛酸反省与总结 -
mlyjxx:
...
十年技术,不要再迷茫
在开发MIS系统的过程中,客户经常会提出这样的要求:将查询结果导出为Excel文件保存下来。经常是写一次就忘一次,因此决定今天将以前的代码和遇到的问题进行一下总结,下面进入正题。
背景:本例的代码来源于我给学校开发的一个奖学金管理系统,使用者在前台设置一组查询条件之后,点击“导出”按钮即可得到Excel文件了。
目的:得到一个Excel文件,包括姓名、学号、奖项类别、所在院系、年级、学生类别、银行卡号、金额等内容项
文件:export.jsp(前台页面,指定搜索条件)、exporting.jsp(后台页面,export.jsp的action)、ExportExcel.java(javabean文件,负责具体的操作)、Dbase.java(javabean文件,负责数据库操作)
代码:
export.jsp:此代码略去,主要是指定搜索条件
exporting.jsp:
背景:本例的代码来源于我给学校开发的一个奖学金管理系统,使用者在前台设置一组查询条件之后,点击“导出”按钮即可得到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(); //清除BUFFER缓冲区 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>
ExportExcel.java:
package DBCon;
import DBCon.*; import jxl.*; import jxl.write.*; import java.sql.*; import java.util.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ExportExcel { private Dbase dbase=null;//用于完成各种对数据库的操作 private Vector content=null;//用于存放所要查询的记录 private ResultSet rs=null; private String name="";//学生姓名 private String studId="";//学号 private String burseType="";//奖项类别 private String grade="";//所在年级 private String studType="";//学生类型 private String colleage="";//所在院系 private String card="";//银行卡号 private int number=0;//奖金金额 private String []title={"姓名","学号","奖项类别","所在院系","年级","学生类别","银行卡号","金额"}; private String targetFile=""; public ExportExcel(){ //构造方法 dbase=new Dbase(); content=new Vector(); } public boolean export(String sql,String name,HttpServletRequest request,ServletContext context){ targetFile+="/"+GetSysTime.getTime()+".xls"; content=getContent(sql);//连接数据库并返回一个VECTOR以向量的形式存放所有的记录 String path=context.getRealPath(targetFile); //指定输出路径 try{ Vector inner=null; String value="";//存放在cell中的文本值 int num=0;//存放在cell中的数字值 Label label=null;//用于写入文本内容到工作表中去 jxl.write.Number nmb=null;//用于写入数值到工作表中去 OutputStream os=new FileOutputStream(path); //创建输出流 WritableWorkbook workbook=Workbook.createWorkbook(os);//创建工作薄 WritableSheet worksheet=workbook.createSheet("record",0);//创建第一个工作表,name:工作表名称 //开始写入第一行,即标题栏 for(int i=0;i<title.length;i++){ label=new Label(i,0,title[i]);//参数依次代表列数、行数、内容 worksheet.addCell(label);//写入单元格 } //开始写入内容 for(int i=0;i<content.size();i++){ inner=(Vector)content.get(i);//获取一条记录 for(int j=0;j<inner.size();j++){ //一个一个字段的放入excel中去 if(j==inner.size()-1){//插入的数值 Integer num_=(Integer)inner.get(j); num=num_.intValue(); nmb=new jxl.write.Number(j,i+1,num); worksheet.addCell(nmb); } else{ value=(String)inner.get(j); label=new Label(j,i+1,value); worksheet.addCell(label); } } } workbook.write(); workbook.close(); } catch(Exception e){ e.printStackTrace(); return false; } return true; } public void export(OutputStream os,String sql){ content=getContent(sql);//以向量的形式存放所有的记录 try{ Vector inner=null; String value="";//存放在cell中的文本值 int num=0;//存放在cell中的数字值 WritableWorkbook workbook=Workbook.createWorkbook(os);//创建工作薄 WritableSheet worksheet=workbook.createSheet("record",0);//创建第一个工作表,name:工作表名称 //WritableSheet worksheet=workbook.createSheet(name,0);//创建第一个工作表,name:工作表名称 Label label=null;//用于写入文本内容到工作表中去 jxl.write.Number nmb=null;//用于写入数值到工作表中去 //开始写入第一行,即标题栏 for(int i=0;i<title.length;i++){ label=new Label(i,0,title[i]);//参数依次代表列数、行数、内容 worksheet.addCell(label);//写入单元格 } //开始写入内容 for(int i=0;i<content.size();i++){ inner=(Vector)content.get(i);//获取一条记录 for(int j=0;j<inner.size();j++){ //一个一个字段的放入excel中去 if(j==inner.size()-1){//插入的数值 Integer num_=(Integer)inner.get(j); num=num_.intValue(); nmb=new jxl.write.Number(j,i+1,num); worksheet.addCell(nmb); } else{ value=(String)inner.get(j); label=new Label(j,i+1,value); worksheet.addCell(label); } } } workbook.write(); workbook.close(); } catch(Exception e){ e.printStackTrace(); //return false; } //return true; } public Vector getContent(String sql){ rs=dbase.executeQuery(sql); Vector outter=new Vector(); try{ while(rs.next()){ Vector inner=new Vector();//用于存放一条记录 name=dbase.getName(rs.getString("studId"));//得到学生姓名 studId=rs.getString("studId");//得到学号 burseType=dbase.getBurseName(rs.getString("code"));//得到奖学金类型 colleage=dbase.getCollName(rs.getString("college"));//得到所在院系 grade=rs.getString("grade"); studType=rs.getString("type"); card=dbase.getCard(rs.getString("studId"));//得到银行卡号 number=dbase.getNum(rs.getString("code"));//得到奖学金额度 inner.add(name); inner.add(studId); inner.add(burseType); inner.add(colleage); inner.add(grade); inner.add(studType); inner.add(card); inner.add(number); outter.add(inner); } } catch(Exception e){ e.printStackTrace(); //rs.close(); return null; } return outter; } }
Dbase.java:此代码略去,主要执行一些通用的数据库操作,如增删改查等等。本例中用到了其executeQuery(String sql)方法,其作用就是返回一个结果集,类型为ResultSet,可以自行改写这个方法,只要返回ResultSet类型即可。
OK,在export.jsp页面中点击提交按钮之后IE就会弹出一个提示框,询问你是要保存
还是要打开这个Excel文件。
如下几点需要说明:
1.response.reset();//清空response的buffer
这两句必须要有
2.大家应该注意到ExportExcel.java中还有一个方法
export(String sql,String name,HttpServletRequest request,ServletContext context),它出现在exporting.jsp中蓝色注释部分,它的作用其实与
export(OutputStream os,String sql)差不多,只不过前者是首先在服务器上生成一个excel文件,然后在返回页面上提供一个超链接让用户来点击下载或者打开这个Excel文件,而后者则是在IE中动态生成Excel文件,在服务器上没有生成相应的Excel文件。在具体的应用中,可以根据实际需要来选择使用哪个方法。
OK,在export.jsp页面中点击提交按钮之后IE就会弹出一个提示框,询问你是要保存
还是要打开这个Excel文件。
如下几点需要说明:
1.response.reset();//清空response的buffer
response.setContentType("application/vnd.ms-excel");//设置正确的输出类型
这两句必须要有
2.大家应该注意到ExportExcel.java中还有一个方法
export(String sql,String name,HttpServletRequest request,ServletContext context),它出现在exporting.jsp中蓝色注释部分,它的作用其实与
export(OutputStream os,String sql)差不多,只不过前者是首先在服务器上生成一个excel文件,然后在返回页面上提供一个超链接让用户来点击下载或者打开这个Excel文件,而后者则是在IE中动态生成Excel文件,在服务器上没有生成相应的Excel文件。在具体的应用中,可以根据实际需要来选择使用哪个方法。
发表评论
-
30个实用的网页设计工具
2013-03-20 09:58 855作为一位网页设计师或开发者,你一直需要搜寻获取强大的网页设计 ... -
java中byte转换int时为何与0xff进行与运算
2011-06-29 19:32 859在剖析该问题前请看如 ... -
BlazeDS集成 Flex+Tomcat开发J2EE模块整合实例
2010-11-18 11:15 2107BlazeDS集成 Flex+Tomcat开发J2EE模块整合 ... -
FckEditor学习笔记
2010-11-15 13:41 10281.Fckeditor官网:http://ckedit ... -
山寨Twitter+桌面IM客户端项目和源码发布
2010-11-13 18:29 1197这个项目是仿Twitter实现,但增加了桌面客户端,即以web ... -
Java读写Excel
2010-11-12 19:24 1226import org.apache.poi.hssf.user ... -
JSP 实现报表打印
2010-11-12 19:23 3740iReport_web开发配置向导- - ... -
Java的MD5加密
2010-11-12 19:20 1122java.security包中提供了现成的一个MD5加密函数, ... -
避免用户看到异常
2010-11-12 19:16 959尽管Struts框架提供了有效的异常处理机制,但不能保证处理所 ... -
Struts处理中文乱码问题总结
2010-11-12 19:13 900学了很久的java,接触SSH ... -
Eclipse实用快捷键大全
2010-11-12 19:10 736Ctrl+1 快速修复(最经典 ... -
Tomcat配置虚拟目录
2010-11-12 19:09 444配置方法: 1.修改端口:修改Tomcat 5.5\se ... -
设为首页和加入收藏
2010-11-12 19:07 693<INPUT TYPE="button&quo ... -
JSP使用FCKeditor控件
2010-11-12 19:06 2521FCKeditor是一个专门使用在网页上属于开放源代码的所 ... -
AS和Java的Rpg开发
2010-11-11 19:02 1224测试下怎么都可以,发布成exe文件,也没 ... -
junit 单元测试使用方法
2010-11-11 18:58 1089junit 是用来做单元测试,最近项目中可能要需要,所以了 ...
相关推荐
#### 结合JSP导出Excel 在Web应用中,通常会结合JSP页面来动态生成Excel文件并提供下载。这涉及到设置正确的HTTP响应头,以便浏览器识别文件类型和进行下载。例如,在JSP中可以这样设置: ```jsp *,javax.servlet....
这种方式利用了浏览器对MIME类型的识别能力以及响应头中的`Content-Disposition`字段来模拟Excel文件的发送过程,从而实现了JSP页面内容到Excel文件的导出。 4. **扩展应用**: - **动态生成Excel内容**:可以在...
本文档主要介绍了使用 JSP 和 jxls 库来实现 Excel 文件的导出,针对 eMan 系统中普遍使用的导出 Excel 的方法 JXL 的缺陷,引入了一种新的方法来解决大规模报表的导出问题。 1. 背景 在 eMan 系统的开发过程中...
在实际业务中,有时我们需要处理Excel文件,例如导入数据到系统或者导出系统数据为Excel报表。本篇文章将探讨如何在JSP中实现Excel文件的导入和导出,主要依赖于开源库Java Excel API(jExcelApi)。 Java Excel ...
在Java编程环境中,将JSP表格中的数据导出到Excel文件是一种常见的需求,尤其是在数据分析、报表生成和数据交换等场景中。本篇文章将详细介绍如何利用Java实现这一功能,主要涉及的技术包括Java Servlet、JSP以及...
【标题】:“ireport利用jsp导出excel&pdf;报表源代码” 【描述】:“本人验证过的jsp代码,ireport导出pdf excel报表” 在Java Web开发中,生成各种类型的报表是常见的需求,例如用于数据分析、业务统计或者数据...
"基于JavaScript的JSP页面数据导出Excel" 基于JavaScript的JSP页面数据导出Excel是指通过JavaScript技术实现JSP页面数据导出到Excel文件中的过程。该技术可以满足用户对报表的需求,提供了一个实用的解决方案。 ...
描述中的"kavachart 报表 导出excel 的例子"进一步确认我们将关注一个实际操作的示例,该示例可能包含代码片段或完整流程,展示如何利用Kavachart的功能将报表数据转换为Excel格式。 在标签中,同样强调了...
### JSP导出Excel并支持分Sheet导出的方法详解 #### 概述 在Web开发领域,特别是使用Java Server Pages (JSP)进行后端处理的应用程序中,经常需要将数据库中的数据导出到Excel文件中供用户下载或进一步处理。这种...
在 JSP 中导出 PDF 和 Excel JSP(Java Server Pages)是一种服务器端技术,用于生成动态网页。近年来,随着企业信息化的发展,报表生成和导出变得越来越重要。在 JSP 中,可以使用多种方式来导出 PDF 和 Excel ...
"报表导出excel word pdf html"这个主题涵盖了将数据导出为不同格式的技术,这些格式都是日常工作和交流中常用的文档类型。以下是关于这些格式以及如何在Java环境中实现导出的详细知识: 1. Excel:Microsoft Excel...
在这个主题中,我们将深入探讨如何使用Java技术栈,特别是基于IDEA开发环境,来实现在JSP和Servlet中进行Excel与数据库之间的数据导入和导出。 首先,我们需要了解Java中用于处理Excel文件的库,如Apache POI。...
本篇将深入探讨如何使用JXL库在Java中打印Excel报表。 首先,要使用JXL库,你需要在项目中引入它的依赖。在本例中,`jxl.jar`是JXL库的核心文件,你需要将其添加到项目的类路径中。如果你使用的是Maven或者Gradle,...
总之,要在JSP中导出PDF和Excel,需要正确配置开发环境,使用iReport设计报表,连接数据源,然后在服务器端使用JasperReports API将报表转换并导出。这涉及到多个库的集成和HTTP响应的设置,确保了用户能够方便地...
在Java Web开发中,经常需要将网页中的数据导出到Excel文件,以供用户进行数据分析或报表制作。本教程将介绍如何在JSP页面中实现数据的Excel导出。 首先,我们需要理解JSP(JavaServer Pages)和Excel的关系。JSP是...
Java导出Excel是一种常见的数据处理需求,特别是在企业级应用中,用于报表生成、数据分析或数据交换。本实例主要介绍如何使用Java Excel API来实现Excel的读取和导出功能。 Java Excel API是一个开源项目,允许Java...
在给定的"JSTL 导出Excel 可用例子"中,我们可以看到如何利用JSTL和一个叫做JExcelApi的库来生成和导出Excel文件。JExcelApi是一个Java库,允许程序读取、写入和修改Microsoft Excel文件。 首先,我们需要理解JSTL...
总的来说,Apache POI和jxls是Java开发中导出Excel的强大工具,它们可以帮助我们轻松地处理各种复杂的Excel导出需求,无论是简单的数据列表还是复杂的报表模板。通过熟练掌握这两个库,你可以为用户提供高效、灵活的...