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"); } }
|
相关推荐
通过`ExcelUtil.java`这个文件名,我们可以推测这是一个包含Excel操作的工具类。在实际项目中,通常会封装成一个工具类,提供静态方法供其他代码调用,以实现读写Excel的便捷功能。例如,该类可能包含`writeExcel()`...
### Java通过POI和JXL给Excel动态添加水印 #### 概述 在实际工作中,经常需要对敏感或重要的Excel文件进行保护措施,比如添加水印。这不仅可以增加文档的专业性,还可以作为版权保护的一种手段。本文将详细介绍...
总结来说,基于JXL的Excel数据导入工具利用了Java的强大功能,结合JXL库,简化了Excel数据处理的复杂性,提高了效率。通过设计合理的工具和接口,我们可以轻松地实现Excel数据的导入、验证、处理和存储,为日常的...
在实际应用中,通常我们会封装这些操作到一个工具类中,比如`ExcelUtil`,以便于复用和管理。这个类可以包含读取单个单元格、整列数据,甚至整个工作簿的各种方法。 总的来说,jxl库为Java开发者提供了一种便捷的...
总结一下,"excelUtils公共导出支持xls与xlsx"是一个基于JXL库的Java工具,它提供了对xls和xlsx两种Excel文件格式的支持,用于数据的导出和导入。通过`ExcelUtil`类,开发者可以便捷地处理Excel文件,而`...
虽然 jxl 不支持 Excel2007 格式,但是我们可以通过解压缩 xlsx 文件,提取出 sharedStrings.xml 和 sheet1.xml,接着使用 XML 解析工具把具体数据解析出来,从而实现 Excel2007 格式的读取。 下面是一个 Excel ...
然后,"ExcelUtil.java"是一个工具类,它封装了与jxl库相关的操作,为开发者提供了一种简便的方式来创建和写入Excel文件。根据描述,只需调用`Excel.writeExcel`方法,开发者就可以在Android设备的特定目录下生成...
1. **导出工具类**:`ExcelUtil` 是一个静态工具类,提供了一种方便的方式来创建和导出Excel文件。在Java Web应用中,它通常与HTTP请求和响应对象一起使用,为用户提供下载Excel文件的功能。 2. **依赖库**:这段...
在开发中是经常遇到的问题,也是程序员比较费心思的开发问题,虽然现在有jxl,poi等第三方开发组件的支持,对excel的操作变的简单了很多,但是大多数都不通用,在此提供一个excel导出工具,内含源码,excelutil,...
在Android应用开发中,为了支持多种语言环境,...总之,通过结合`jxl.jar`库和适当的Java编程,我们可以创建一个自动化工具,从Excel文件生成Android应用的多语言`strings.xml`文件,从而简化多语言支持的维护工作。
4. 文件中的代码展示了一个名为`ExcelUtil`的工具类,该类中包含一个`DB2Excel`方法,这个方法接受一个`ResultSet`对象作为参数。`ResultSet`对象是JDBC查询数据库返回的结果集,包含查询到的数据。 5. 数据库结果...
提到了`ExcelUtil`类,这是一个工具类,用于实现数据的导入导出功能。类中包含静态常量`FILE_SEPARATOR`用于获取文件路径分隔符,并提供了导出Excel的方法。该类的具体实现未完全给出,但可以看出它是通过泛型T来...