JXL包的使用

JXL包提供了JAVA环境下操作EXCEL文件的方法,可对EXCEL文件进行读写操作。总体而言这个包的使用非常简单,因工作需要对它进行了简单的应用,现写一下个人总结。

JXL包似乎对某些版本的EXCEL文件不太兼容,网站上说它支持EXCEL95-2000。不知道是不是这个原因,在读取EXCEL XP文件时(文件中使用了“数据有效性”等格式),会发出一些警告信息,虽然不影响使用,但终究不太好看。所以下面这个例子是从一个EXCEL文件中读取数据,并将数据写入另一文件中,清除掉文件中使用的所有格式。在清除掉文件中使用的格式之后,再读取这个文件就一切正常了。

import jxl.*;

import jxl.write.*;i

mport java.io.*;

public class CleanExcel { 

public static void clean(String inFile, String outFile){  

//首先需要声明输入输出流与Workbook,Workbook对应Excel文件  

InputStream is = null;  

Workbook inWb = null;  

OutputStream os = null;  

WritableWorkbook outWb = null;  

try{  

 //实例化输入输出流与

Workbook   is = new FileInputStream(inFile);  

 //Workbook无法通过new关键字进行实例化,必须调用Workbook.getWorkbook(File)静态方法   

inWb = Workbook.getWorkbook(is);   

os = new FileOutputStream(outFile);   

outWb = Workbook.createWorkbook(os);   

//下面这一句是选择原文件的工作表,Sheet对应的是Excel中的Sheet   

Sheet inSheet = inWb.getSheet("Sheet1");   

//WritableSheet为要创建的文件中的工作表   

WritableSheet outSheet = outWb.createSheet("Sheet1", 0);   

//设置循环标志   

boolean flag = true;   

//循环条件   

int i = 0;      

while(flag){    

//Cell对应一个单元格,getCell方法第一个参数对应列,第二个参数对应行。    

//注意:行和列的开始坐标均为0,与JAVA中的数组一样    

Cell tmp = inSheet.getCell(0, i);    

//取得每行第一列单元格中的数据。不管单元格中的数据在EXCEL中为何种类型,读取之后都将成为String类型    

String c = tmp.getContents().trim();    

//为处理方面,EXCEL文件中最后一行的第一个单元格设置了一个break标志,读到这一行时将退出循环    

if(c.equals("break")){     

flag = false;     

break;    

}    

//我处理的EXCEL表格为8列    

for(int j = 0; j < 8; j++){    

 //取得源单元格     

Cell inCell = inSheet.getCell(j, i);     

//获取数据     

String content = inCell.getContents().trim();    

 //创建新单元格,并用数据填充     

Label labelCF=new Label(j, i,  content);    

 //将新单元格加入到新工作表中     

outSheet.addCell(labelCF);    

}   

 i++;   

}   

//写入文件   

outWb.write();   

//关闭流   

outWb.close();   

os.close();     

}catch(Exception e){   

e.printStackTrace();  

}  

//测试 

public static void main(String[] args){  

try {   

String in = "old.xls";  

 String out = "new.xls";   

CleanExcel.clean(in, out);     

} catch (Exception e) {   

 e.printStackTrace();  

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值