java excel 搜索_Java操作Excel(读、写、搜索关键字、插入图片)

importjava.io.File;importjava.io.IOException;importjxl.Cell;importjxl.Sheet;importjxl.Workbook;importjxl.read.biff.BiffException;importjxl.write.Label;importjxl.write.WritableImage;importjxl.write.WritableSheet;importjxl.write.WritableWorkbook;importjxl.write.WriteException;importjxl.write.biff.RowsExceededException;public classExcelUtils {/**读取Excel文件的内容

*@paramfile 待读取的文件

*@return

*/

public staticString readExcel(File file){

StringBuffer sb= newStringBuffer();

Workbook wb= null;try{//构造Workbook(工作薄)对象

wb=Workbook.getWorkbook(file);

}catch(BiffException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}if(wb==null)return null;//获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了

Sheet[] sheet =wb.getSheets();if(sheet!=null&&sheet.length>0){//对每个工作表进行循环

for(int i=0;i

int rowNum =sheet[i].getRows();for(int j=0;j

Cell[] cells =sheet[i].getRow(j);if(cells!=null&&cells.length>0){//对每个单元格进行循环

for(int k=0;k

String cellValue =cells[k].getContents();

sb.append(cellValue+"\t");

}

}

sb.append("\r\n");

}

sb.append("\r\n");

}

}//最后关闭资源,释放内存

wb.close();

System.out.println("313");returnsb.toString();

}/**生成一个Excel文件

*@paramfileName 要生成的Excel文件名*/

public static voidwriteExcel(String fileName){

WritableWorkbook wwb= null;try{//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象

wwb = Workbook.createWorkbook(newFile(fileName));

}catch(IOException e) {

e.printStackTrace();

}if(wwb!=null){//创建一个可写入的工作表//Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置

WritableSheet ws = wwb.createSheet("sheet1", 0);//下面开始添加单元格

for(int i=0;i<10;i++){for(int j=0;j<5;j++){//这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行

Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");try{//将生成的单元格添加到工作表中

ws.addCell(labelC);

}catch(RowsExceededException e) {

e.printStackTrace();

}catch(WriteException e) {

e.printStackTrace();

}

}

}try{//从内存中写入文件中

wwb.write();//关闭资源,释放内存

wwb.close();

}catch(IOException e) {

e.printStackTrace();

}catch(WriteException e) {

e.printStackTrace();

}

}

}/**搜索某一个文件中是否包含某个关键字

*@paramfile 待搜索的文件

*@paramkeyWord 要搜索的关键字

*@return

*/

public static booleansearchKeyWord(File file,String keyWord){boolean res = false;

Workbook wb= null;try{//构造Workbook(工作薄)对象

wb=Workbook.getWorkbook(file);

}catch(BiffException e) {returnres;

}catch(IOException e) {returnres;

}if(wb==null)returnres;//获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了

Sheet[] sheet =wb.getSheets();boolean breakSheet = false;if(sheet!=null&&sheet.length>0){//对每个工作表进行循环

for(int i=0;i

int rowNum =sheet[i].getRows();boolean breakRow = false;for(int j=0;j

Cell[] cells =sheet[i].getRow(j);if(cells!=null&&cells.length>0){boolean breakCell = false;//对每个单元格进行循环

for(int k=0;k

String cellValue =cells[k].getContents();if(cellValue==null)continue;if(cellValue.contains(keyWord)){

res= true;

breakCell= true;

breakRow= true;

breakSheet= true;

}

}

}

}

}

}//最后关闭资源,释放内存

wb.close();

System.out.print(res);returnres;

}/**往Excel中插入图片

*@paramdataSheet 待插入的工作表

*@paramcol 图片从该列开始

*@paramrow 图片从该行开始

*@paramwidth 图片所占的列数

*@paramheight 图片所占的行数

*@paramimgFile 要插入的图片文件*/

public static void insertImg(WritableSheet dataSheet, int col, int row, intwidth,intheight, File imgFile){

WritableImage img= newWritableImage(col, row, width, height, imgFile);

dataSheet.addImage(img);

}public static voidmain(String[] args) {try{//创建一个工作薄

WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls"));//待插入的工作表

WritableSheet imgSheet = workbook.createSheet("Images",0);//要插入的图片文件

File imgFile = new File("D:/1.png");//图片插入到第二行第一个单元格,长宽各占六个单元格

insertImg(imgSheet,1,2,4,6,imgFile);//从第2列第3行开始,右占4列,下占6行

workbook.write();

workbook.close();

File excel= new File("c:\\test.XLS");//String index out of range: 118

System.out.println(readExcel(excel));

System.out.println(searchKeyWord(excel,"1"));

writeExcel("c:\\test.XLS");

}catch(IOException e) {

e.printStackTrace();

}catch(WriteException e) {

e.printStackTrace();

}

}

}//本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/833422

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值