一、jxl.jar简介
二、jxl.jar下载、安装、使用
三、jsp页面中使用jxl写excel
一、jxl简介
Java Excel是一开放源码项目,Java开发人员通过它可以对excel文档进行读取、创建、更新等操作。因为jxl是使用java编写的,所以使用该 API非Windows操作系统也可以正常的处理Excel数据表。并且我们在Web应用中可以通过JSP、 Servlet来调用API实现对Excel数据表的访问。
提供以下功能:
* 从Excel 95、97、2000等格式的文件中读取数据;
* 读取Excel公式(可以读取Excel 97以后的公式);
* 生成Excel数据表(格式为Excel 97);
* 支持字体、数字、日期的格式化;
* 支持单元格的阴影操作,以及颜色操作;
* 修改已经存在的数据表;
* 能够读取图表信息
二、jxl下载、安装、使用
jxl下载:因为网络上很多下载链接,这里就不一一列举了。
安装与使用:将下载下来的jxl文件解压缩之后,找到jxl.jar包,所谓安装有两种方式,一是将jxl.jar包放到环境的公共目录,这样使用此环境的所有项目都可以使用这个包,这样做的缺点是,但如果把一个项目移到其他服务器上,还必须要将jxl.jar包在新服务器上配置;另一种方法是那个项目需要使用jxl.jar包,便将jxl.jar包烤到此项目的lib目录下就可以,笔者在使用其他所有的jar包时都是这样的使用的,也许只是一种习惯把。
三、jsp中使用jxl写excel
以下jsp文件是一个生产制造业的查询页面,在查询出数据是可以点击导出excel按钮将数据导出到excel文档中,这只是笔者对jxl比较浅显、粗陋的认识,拿出来未免有点贻笑大方,如果纯粹是浪费您的时间,请一笑而过吧。
- <%
- /********************************************
- * 文件名称:index.jsp
- * 功能描述:查询数据、并导出到excel
- * 创建日期:2008-8-25
- * @author:wlq1983
- * @version V1.0
- *********************************************/
- %>
- <%@page language="java"%>
- <%@page contentType="text/html;charset=GB2312" %>
- <%@page import="java.util.*"%>
- <%@page import="jxl.*"%>
- <%@page import="java.io.*"%>
- <%@page import="java.lang.*"%>
- <%@page errorPage="../common/ErrorPage.jsp"%>
- <html>
- <form name="thisform" method="post">
-
- <%
- //strFullPath+strPath获得excel文件的绝对定位
- String strFullPath = getServletContext().getRealPath("excel");
- String strPath = strFullPath +"//";
- //randomValue获取随机数作为excel文档的文件名,如果觉得随机数还有重复的可能,
- //可以用时间加数据的形式得到文件名,例如现在是2008-08-25 21:50:55,
- //那么可以取文件名20080825215055这样基本上就不会重复了
- String randomValue = String.valueOf(Math.round(Math.random() * 100));
- //jxl既可以读本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。
- //读取Excel数据表的第一步是创建Workbook(术语:工作薄)
- //下列语句就可以从输入流中读取excel数据表,并且创建表格sheet1
- jxl.write.WritableWorkbook wwb =Workbook.createWorkbook(new File(strPath+ randomValue + ".xls"));
- jxl.write.WritableSheet ws=wwb.createSheet("sheet1",0);
- //以下代码就是生成excel表头的代码
- jxl.write.Label labelC=new jxl.write.Label(0,0,"订单号");
- ws.addCell(labelC);
- labelC=new jxl.write.Label(1,0,"物料号");
- ws.addCell(labelC);
- labelC=new jxl.write.Label(2,0,"需求数量");
- ws.addCell(labelC);
- labelC=new jxl.write.Label(3,0,"完工数量");
- ws.addCell(labelC);
- labelC=new jxl.write.Label(4,0,"生产日期");
- ws.addCell(labelC);
- %>
-
- <tr>
-
- </tr>
-
- <%
- //objResult.getRows()相当于rd.next的长度,这里套用自写的函数
- //objResult.getCell(1,r)的作用是循环取结果值
- for(int r=0;r<objResult.getRows();r++) {
- %>
- <tr>
-
- </tr>
- <%
- //以下”0,1,2,3,4“代表列,
- //objResult.getCell(1,r)是获取到的值,如果不明白可以用固定值代替他们,
- //然后导出一个excel表格就知道了。
- labelC=new jxl.write.Label(0,r+1,objResult.getCell(1,r));
- ws.addCell(labelC);
- labelC=new jxl.write.Label(1,r+1,objResult.getCell(2,r));
- ws.addCell(labelC);
- labelC=new jxl.write.Label(2,r+1,objResult.getCell(3,r));
- ws.addCell(labelC);
- labelC=new jxl.write.Label(3,r+1,objResult.getCell(4,r));
- ws.addCell(labelC);
- labelC=new jxl.write.Label(4,r+1,objResult.getCell(5,r));
- ws.addCell(labelC);
- %>
- <% } %>
- <%
- //千万不能忘记下面两行,否则是得不到excel文件内容的。
- wwb.write();
- wwb.close();
- %>
- 右键<a href="../excel/<%out.print(randomValue);%>.xls">另存为</a>保存报表为excel表
- </form>
全文结束。