OAF_文件系列8_实现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();

 

三、简单写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的简单代码

 

3.import java.io.File;   

4.  

5.import java.io.FileInputStream;   

6.  

7.import java.io.InputStream;   

8.  

9.    

10.  

11.import jxl.Cell;   

12.  

13.import jxl.CellType;   

14.  

15.import jxl.Sheet;   

16.  

17.import jxl.Workbook;   

18.  

19.import jxl.write.Label;   

20.  

21.    

22.  

23.public class ExcelOperater    

24.  

25.{   

26.  

27.    public static void main(String[] args)    

28.  

29.    {   

30.  

31.        jxl.Workbook readwb = null;   

32.  

33.        try    

34.  

35.        {   

36.  

37.            //构建Workbook对象, 只读Workbook对象   

38.  

39.            //直接从本地文件创建Workbook   

40.  

41.            InputStream instream = new FileInputStream("F:/红楼人物.xls");   

42.  

43.            readwb = Workbook.getWorkbook(instream);   

44.  

45.    

46.  

47.            //Sheet的下标是从0开始   

48.  

49.            //获取第一张Sheet表   

50.  

51.            Sheet readsheet = readwb.getSheet(0);   

52.  

53.            //获取Sheet表中所包含的总列数   

54.  

55.            int rsColumns = readsheet.getColumns();   

56.  

57.            //获取Sheet表中所包含的总行数   

58.  

59.            int rsRows = readsheet.getRows();   

60.  

61.            //获取指定单元格的对象引用   

62.  

63.            for (int i = 0; i < rsRows; i++)   

64.  

65.            {   

66.  

67.                for (int j = 0; j < rsColumns; j++)   

68.  

69.                {   

70.  

71.                    Cell cell = readsheet.getCell(j, i);   

72.  

73.                    System.out.print(cell.getContents() + " ");   

74.  

75.                }   

76.  

77.                System.out.println();   

78.  

79.            }   

80.  

81.               

82.  

83.            //利用已经创建的Excel工作薄,创建新的可写入的Excel工作薄   

84.  

85.            jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(   

86.  

87.                    "F:/红楼人物1.xls"), readwb);   

88.  

89.            //读取第一张工作表   

90.  

91.            jxl.write.WritableSheet ws = wwb.getSheet(0);   

92.  

93.            //获得第一个单元格对象   

94.  

95.            jxl.write.WritableCell wc = ws.getWritableCell(0, 0);   

96.  

97.            //判断单元格的类型, 做出相应的转化   

98.  

99.            if (wc.getType() == CellType.LABEL)    

100.  

101.            {   

102.  

103.                Label l = (Label) wc;   

104.  

105.                l.setString("新姓名");   

106.  

107.            }   

108.  

109.            //写入Excel对象   

110.  

111.            wwb.write();   

112.  

113.            wwb.close();   

114.  

115.        } catch (Exception e) {   

116.  

117.            e.printStackTrace();   

118.  

119.        } finally {   

120.  

121.            readwb.close();   

122.  

123.        }   

124.  

125.}   

126.  

127.}   

 

 

 

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

 

 

 

 

 

 

 

Thanks and Regards

你可能感兴趣的:(Excel)