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
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建