OAF_文件系列7_实现OAF处理Excel的JXL包介绍(概念)

20150714 Created By BaoXinjian

一、摘要


JAVA EXCEL API是一个操作excel的组件包,可以满足对一般的excel操作的需要

JAVA EXCEL API是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。

使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为它是使用Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel数据表的访问。

1. Excel文件中的对象和JXL组件中的对象的对应关系

(1). Excel文件包括的对象:Excel文件  工作簿  单元格

(2). Jxl组件包包括的对象:Workbook    Sheet   Cell

2. Excel文件中的对象和jxl组件中的对象的对应关系

(1). Excel文件 ------- workbook

(2). 工作簿 ------- sheet

(3). 单元格 ------- cell

3. 下载方式

官方网站 http://www.andykhan.com/jexcelapi/ 下载最新版本(本人下的是jexcelapi_2_6_12.tar.gz,解压后将里面的jxl.jar复制到WEB-INF/lib目录下面即可)

Java Excel API的jar包可以通过以下URL获得:

http://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.6/jexcelapi_2_6_6.zip/download

(包括所有版本):http://sourceforge.net/projects/jexcelapi/files/

 

二、处理Excel文件中的数据的过程


选取Excel文件A选择工作簿B选择单元格C读取信息A释放资源。调用jxl的方法操作excel文件过程如下:

Step1. 通过Workbook的静态方法getWorkbook选取Excel文件

Workbook workbook = Workbook.getWorkbook(new File(execlPath));

Step2. 通过Workbook的getSheet方法选择第一个工作簿(从0开始)

Sheet sheet = workbook.getSheet(0);

Step3. 通过Sheet方法的getCell方法选择单元格

Cell cell = sheet.getCell(2,1); //获取位置为C2单元格

Step4. 通过Cell的getContents方法把单元格中的信息以字符的形式读取出来

String stringc2 = cell.getContents();

Step5. 操作完成,释放资源.

workbook.close();

 

 三、OAF使用JXL


1. 查看Java的版本

 

2. 下载JXL包,JXL版本必须对应相应的JAVA的版本

http://www.andykhan.com/jexcelapi/download.html

 

3.1 加载Project Properties中Jar包


3.2 加载Project Properties后,导入jxl包后无问题

 

 

 4.1 加入Embedded OC4J Server Preferences

4.2 加入JAR包后,变异运行时无问题

 

四、简单写Excel的过程


1. 写Excel的简单代码

import java.io.IOException;
import java.io.OutputStream;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;

public class SimpleExcelWrite {
    public void createExcel(OutputStream os) throws WriteException,IOException{
        //创建工作薄
        WritableWorkbook workbook = Workbook.createWorkbook(os);
        //创建新的一页
        WritableSheet sheet = workbook.createSheet("First Sheet",0);
        //创建要显示的内容,创建一个单元格,第一个参数为列坐标,第二个参数为行坐标,第三个参数为内容
        Label xuexiao = new Label(0,0,"学校");
        sheet.addCell(xuexiao);
        Label zhuanye = new Label(1,0,"专业");
        sheet.addCell(zhuanye);
        Label jingzhengli = new Label(2,0,"专业竞争力");
        sheet.addCell(jingzhengli);
        
        Label qinghua = new Label(0,1,"清华大学");
        sheet.addCell(qinghua);
        Label jisuanji = new Label(1,1,"计算机专业");
        sheet.addCell(jisuanji);
        Label gao = new Label(2,1,"高");
        sheet.addCell(gao);
        
        Label beida = new Label(0,2,"北京大学");
        sheet.addCell(beida);
        Label falv = new Label(1,2,"法律专业");
        sheet.addCell(falv);
        Label zhong = new Label(2,2,"中");
        sheet.addCell(zhong);
        
        Label ligong = new Label(0,3,"北京理工大学");
        sheet.addCell(ligong);
        Label hangkong = new Label(1,3,"航空专业");
        sheet.addCell(hangkong);
        Label di = new Label(2,3,"低");
        sheet.addCell(di);
        
        //把创建的内容写入到输出流中,并关闭输出流
        workbook.write();
        workbook.close();
        os.close();
    }
    
}

 

五、简单读Excel的过程


1. 读Excel的简单代码

import java.io.File;   import java.io.FileInputStream;   
import java.io.InputStream; import jxl.Cell; import jxl.CellType; import jxl.Sheet; import jxl.Workbook; import jxl.write.Label; public class ExcelOperater {
public static void main(String[] args) {
jxl.Workbook readwb = null;
try
{
//构建Workbook对象, 只读Workbook对象
//直接从本地文件创建Workbook
InputStream instream = new FileInputStream("F:/红楼人物.xls");
readwb = Workbook.getWorkbook(instream);
//Sheet的下标是从0开始
//获取第一张Sheet表
Sheet readsheet = readwb.getSheet(0);
//获取Sheet表中所包含的总列数
int rsColumns = readsheet.getColumns();
//获取Sheet表中所包含的总行数 int rsRows = readsheet.getRows(); //获取指定单元格的对象引用 for (int i = 0; i < rsRows; i++) { for (int j = 0; j < rsColumns; j++) { Cell cell = readsheet.getCell(j, i);
System.out.print(cell.getContents() + " "); } System.out.println(); } //利用已经创建的Excel工作薄,创建新的可写入的Excel工作薄
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File("F:/红楼人物1.xls"), readwb); //读取第一张工作表 jxl.write.WritableSheet ws = wwb.getSheet(0); //获得第一个单元格对象 jxl.write.WritableCell wc = ws.getWritableCell(0, 0); //判断单元格的类型, 做出相应的转化 if (wc.getType() == CellType.LABEL) { Label l = (Label) wc; l.setString("新姓名"); } //写入Excel对象 wwb.write(); wwb.close(); } catch (Exception e) { e.printStackTrace(); } finally { readwb.close(); } } }

 

Thanks and Regards

posted on 2015-05-07 10:12  东方瀚海  阅读(607)  评论(0编辑  收藏  举报