java jxl 写的excelutil 工具

import java.io.File;
import java.io.IOException;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableImage;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

public class ExcelUtils {

 /**读取Excel文件的内容
  * @param file  待读取的文件
  * @return
  */
 public static String readExcel(File file){
  StringBuffer sb = new StringBuffer();
  
  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<sheet.length;i++){
    //得到当前工作表的行数
    int rowNum = sheet[i].getRows();
    for(int j=0;j<rowNum;j++){
     //得到当前行的所有单元格
     Cell[] cells = sheet[i].getRow(j);
     if(cells!=null&&cells.length>0){
      //对每个单元格进行循环
      for(int k=0;k<cells.length;k++){
       //读取当前单元格的值
       String cellValue = cells[k].getContents();
       sb.append(cellValue+"\t");
      }
     }
     sb.append("\r\n");
    }
    sb.append("\r\n");
   }
  }
  //最后关闭资源,释放内存
  wb.close();
  return sb.toString();
 }
 /**生成一个Excel文件
  * @param fileName  要生成的Excel文件名
  */
 public static void writeExcel(String fileName){
  WritableWorkbook wwb = null;
  try {
   //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
   wwb = Workbook.createWorkbook(new File(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();
   }
  }
 }
 /**搜索某一个文件中是否包含某个关键字
  * @param file  待搜索的文件
  * @param keyWord  要搜索的关键字
  * @return
  */
 public static boolean searchKeyWord(File file,String keyWord){
  boolean res = false;
  
  Workbook wb = null;
  try {
   //构造Workbook(工作薄)对象
   wb=Workbook.getWorkbook(file);
  } catch (BiffException e) {
   return res;
  } catch (IOException e) {
   return res;
  }
  
  if(wb==null)
   return res;
  
  //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了
  Sheet[] sheet = wb.getSheets();
  
  boolean breakSheet = false;
  
  if(sheet!=null&&sheet.length>0){
   //对每个工作表进行循环
   for(int i=0;i<sheet.length;i++){
    if(breakSheet)
     break;
    
    //得到当前工作表的行数
    int rowNum = sheet[i].getRows();
    
    boolean breakRow = false;
    
    for(int j=0;j<rowNum;j++){
     if(breakRow)
      break;
     //得到当前行的所有单元格
     Cell[] cells = sheet[i].getRow(j);
     if(cells!=null&&cells.length>0){
      boolean breakCell = false;
      //对每个单元格进行循环
      for(int k=0;k<cells.length;k++){
       if(breakCell)
        break;
       //读取当前单元格的值
       String cellValue = cells[k].getContents();
       if(cellValue==null)
        continue;
       if(cellValue.contains(keyWord)){
        res = true;
        breakCell = true;
        breakRow = true;
        breakSheet = true;
       }
      }
     }
    }
   }
  }
  //最后关闭资源,释放内存
  wb.close();
  
  return res;
 }
    /**往Excel中插入图片
     * @param dataSheet  待插入的工作表
     * @param col 图片从该列开始
     * @param row 图片从该行开始
     * @param width 图片所占的列数
     * @param height 图片所占的行数
     * @param imgFile 要插入的图片文件
     */
    public static void insertImg(WritableSheet dataSheet, int col, int row, int width,
            int height, File imgFile){
     WritableImage img = new WritableImage(col, row, width, height, imgFile);
     dataSheet.addImage(img);
    }
   
   
    public static void main(String[] args) {
     
     /*try {
      //创建一个工作薄
   WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls"));
   //待插入的工作表
   WritableSheet imgSheet = workbook.createSheet("Images",0);
   //要插入的图片文件
   File imgFile = new File("D:/login_jc.png");
   //图片插入到第二行第一个单元格,长宽各占六个单元格
   insertImg(imgSheet,0,1,10,20,imgFile);
   workbook.write();
   workbook.close();
  } catch (IOException e) {
   e.printStackTrace();
  } catch (WriteException e) {
   e.printStackTrace();
  } */    
     
//     System.out.println(readExcel(new File("d:/test1.xls")));
//     System.out.println(searchKeyWord(new File("d:/test1.xls"), "张三"));
     
     writeExcel("d:/wuchao.xls");
     
    }
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值