`
jackson_jar
  • 浏览: 36886 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

java jxl 写的excelutil 工具

    博客分类:
  • java
阅读更多

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");
     
    }
 
}

分享到:
评论

相关推荐

    java jxl操作Excel

    通过`ExcelUtil.java`这个文件名,我们可以推测这是一个包含Excel操作的工具类。在实际项目中,通常会封装成一个工具类,提供静态方法供其他代码调用,以实现读写Excel的便捷功能。例如,该类可能包含`writeExcel()`...

    Java通过POI和JXL给Excel动态添加水印

    ### Java通过POI和JXL给Excel动态添加水印 #### 概述 在实际工作中,经常需要对敏感或重要的Excel文件进行保护措施,比如添加水印。这不仅可以增加文档的专业性,还可以作为版权保护的一种手段。本文将详细介绍...

    基于JXL的Excel数据导入工具

    总结来说,基于JXL的Excel数据导入工具利用了Java的强大功能,结合JXL库,简化了Excel数据处理的复杂性,提高了效率。通过设计合理的工具和接口,我们可以轻松地实现Excel数据的导入、验证、处理和存储,为日常的...

    使用jxl读取Excel表格数据

    在实际应用中,通常我们会封装这些操作到一个工具类中,比如`ExcelUtil`,以便于复用和管理。这个类可以包含读取单个单元格、整列数据,甚至整个工作簿的各种方法。 总的来说,jxl库为Java开发者提供了一种便捷的...

    excelUtils公共导出支持xls与xlsx

    总结一下,"excelUtils公共导出支持xls与xlsx"是一个基于JXL库的Java工具,它提供了对xls和xlsx两种Excel文件格式的支持,用于数据的导出和导入。通过`ExcelUtil`类,开发者可以便捷地处理Excel文件,而`...

    Android操作Excel文件的功能实现

    虽然 jxl 不支持 Excel2007 格式,但是我们可以通过解压缩 xlsx 文件,提取出 sharedStrings.xml 和 sheet1.xml,接着使用 XML 解析工具把具体数据解析出来,从而实现 Excel2007 格式的读取。 下面是一个 Excel ...

    AndroidExcel.zip

    然后,"ExcelUtil.java"是一个工具类,它封装了与jxl库相关的操作,为开发者提供了一种简便的方式来创建和写入Excel文件。根据描述,只需调用`Excel.writeExcel`方法,开发者就可以在Android设备的特定目录下生成...

    JAVA EXCEL导出

    1. **导出工具类**:`ExcelUtil` 是一个静态工具类,提供了一种方便的方式来创建和导出Excel文件。在Java Web应用中,它通常与HTTP请求和响应对象一起使用,为用户提供下载Excel文件的功能。 2. **依赖库**:这段...

    excel导出工具类

    在开发中是经常遇到的问题,也是程序员比较费心思的开发问题,虽然现在有jxl,poi等第三方开发组件的支持,对excel的操作变的简单了很多,但是大多数都不通用,在此提供一个excel导出工具,内含源码,excelutil,...

    Android 自动化生成多语言strings文件

    在Android应用开发中,为了支持多种语言环境,...总之,通过结合`jxl.jar`库和适当的Java编程,我们可以创建一个自动化工具,从Excel文件生成Android应用的多语言`strings.xml`文件,从而简化多语言支持的维护工作。

    将数据导入到excel

    4. 文件中的代码展示了一个名为`ExcelUtil`的工具类,该类中包含一个`DB2Excel`方法,这个方法接受一个`ResultSet`对象作为参数。`ResultSet`对象是JDBC查询数据库返回的结果集,包含查询到的数据。 5. 数据库结果...

    1512001066吴跟强实习笔记1

    提到了`ExcelUtil`类,这是一个工具类,用于实现数据的导入导出功能。类中包含静态常量`FILE_SEPARATOR`用于获取文件路径分隔符,并提供了导出Excel的方法。该类的具体实现未完全给出,但可以看出它是通过泛型T来...

Global site tag (gtag.js) - Google Analytics