java jxl解析excel

来源:互联网 发布:电子商务软件提供商 编辑:程序博客网 时间:2024/03/29 22:35

java JXL解析excel

package me.tspace.exceldeal;import java.io.File;import java.io.IOException;import java.util.StringTokenizer;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 ExcelDeal {/** * 除去字符串中指定的分隔符 * @param s 字符串 * @param val 指定的分隔符 * @return */public String toToken(String s, String val) {if (s == null || s.trim().equals("")) {return s;}if (val == null || val.equals("")) {return s;}StringBuffer stringBuffer = new StringBuffer();String[] result = s.split(val); for (int x=0; x<result.length; x++){ stringBuffer.append(" ").append(result[x]); }return stringBuffer.toString();}public String excelCharaterDeal(String str){String[] val = {"-","_","/"};//定义特殊字符for(String i:val){str=this.toToken(str, i);}return str;}/**读取Excel文件的内容 * @param file  待读取的文件 * @return */public  String readExcel(File file){StringBuffer stringBuffer = new StringBuffer();Workbook workBook = null;try {//构造Workbook(工作薄)对象workBook=Workbook.getWorkbook(file);} catch (BiffException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}if(workBook==null)return null;//获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了Sheet[] sheet = workBook.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();//特殊字符处理cellValue=this.excelCharaterDeal(cellValue);stringBuffer.append(cellValue+"\t");}}stringBuffer.append("\r\n");}stringBuffer.append("\r\n");}}//最后关闭资源,释放内存workBook.close();return stringBuffer.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);    } }


原创粉丝点击