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();
System.out.println("313");
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();
System.out.print(res);
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:/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

最新文章

  1. Crontab中shell每分钟执行一次HDFS文件上传不执行的解决方案
  2. 题目1006:ZOJ问题
  3. 如何提高android串口kernel log等级
  4. cojs 疯狂的求和问题 解题报告
  5. POJ1159 - Palindrome(区间DP)
  6. 对RecycleView的多种item布局的封装
  7. 关于bootstrap--表格(table的各种样式)
  8. 微信小程序-scroll-view隐藏滚动条
  9. arm-linux-gnueabi和arm-linux-gnueabihf 的区别
  10. 敏捷冲刺每日报告--day1
  11. 编码 decode &amp; encode
  12. 高性能Mysql笔记 — explain
  13. 对Redis的理解
  14. [UnityShader基础]03.透明度混合
  15. 基于C#的单元测试(VS2015)
  16. C# 用反射动态绑定事件
  17. 统一登录中心SSO 单点登录系统的构想
  18. Django---时间的时区问题
  19. wap启用宏
  20. spark(三)spark sql

热门文章

  1. C++的CreateThread实例
  2. windows 7 和 Ubuntu的双系统安全删除Ubuntu
  3. ZooKeeper学习第八期——ZooKeeper伸缩性
  4. navigator.sendBeancon方法简介
  5. OpenShift
  6. [MetaHook] Load TGA texture to OpenGL
  7. Spring MVC的工作流程
  8. 开源搜索 Iveely Search Engine 0.6.0 发布 -- 黎明前的娇嫩
  9. java多线程-BlockingQueue
  10. Spring配置文件详解:&lt;context:annotation-config/&gt;和&lt;context:component-scan base-package=&quot;&quot;/&gt;和&lt;mvc:annotation-driven /&gt;