`
kenshinlk
  • 浏览: 118349 次
  • 性别: Icon_minigender_1
  • 来自: 广东.佛山.南海
社区版块
存档分类
最新评论

JXL操作

阅读更多
java 代码
  1. package chb.util;   
  2.   
  3. import java.io.File;   
  4. import java.io.IOException;   
  5.   
  6. import jxl.Cell;   
  7. import jxl.Sheet;   
  8. import jxl.Workbook;   
  9. import jxl.read.biff.BiffException;   
  10. import jxl.write.Label;   
  11. import jxl.write.WritableImage;   
  12. import jxl.write.WritableSheet;   
  13. import jxl.write.WritableWorkbook;   
  14. import jxl.write.WriteException;   
  15. import jxl.write.biff.RowsExceededException;   
  16.   
  17. public class ExcelUtils {   
  18.   
  19.         /**读取Excel文件的内容  
  20.          * @param file  待读取的文件  
  21.          * @return  
  22.          */  
  23.         public static String readExcel(File file){   
  24.                 StringBuffer sb = new StringBuffer();   
  25.                    
  26.                 Workbook wb = null;   
  27.                 try {   
  28.                         //构造Workbook(工作薄)对象   
  29.                         wb=Workbook.getWorkbook(file);   
  30.                 } catch (BiffException e) {   
  31.                         e.printStackTrace();   
  32.                 } catch (IOException e) {   
  33.                         e.printStackTrace();   
  34.                 }   
  35.                    
  36.                 if(wb==null)   
  37.                         return null;   
  38.                    
  39.                 //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了   
  40.                 Sheet[] sheet = wb.getSheets();   
  41.                    
  42.                 if(sheet!=null&&sheet.length>0){   
  43.                         //对每个工作表进行循环   
  44.                         for(int i=0;i<sheet.length;i++){   
  45.                                 //得到当前工作表的行数   
  46.                                 int rowNum = sheet[i].getRows();   
  47.                                 for(int j=0;j<rowNum;j++){   
  48.                                         //得到当前行的所有单元格   
  49.                                         Cell[] cells = sheet[i].getRow(j);   
  50.                                         if(cells!=null&&cells.length>0){   
  51.                                                 //对每个单元格进行循环   
  52.                                                 for(int k=0;k<cells.length;k++){   
  53.                                                         //读取当前单元格的值   
  54.                                                         String cellValue = cells[k].getContents();   
  55.                                                         sb.append(cellValue+"\t");   
  56.                                                 }   
  57.                                         }   
  58.                                         sb.append("\r\n");   
  59.                                 }   
  60.                                 sb.append("\r\n");   
  61.                         }   
  62.                 }   
  63.                 //最后关闭资源,释放内存   
  64.                 wb.close();   
  65.                 return sb.toString();   
  66.         }   
  67.         /**生成一个Excel文件  
  68.          * @param fileName  要生成的Excel文件名  
  69.          */  
  70.         public static void writeExcel(String fileName){   
  71.                 WritableWorkbook wwb = null;   
  72.                 try {   
  73.                         //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象   
  74.                         wwb = Workbook.createWorkbook(new File(fileName));   
  75.                 } catch (IOException e) {   
  76.                         e.printStackTrace();   
  77.                 }   
  78.                 if(wwb!=null){   
  79.                         //创建一个可写入的工作表   
  80.                         //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置   
  81.                         WritableSheet ws = wwb.createSheet("sheet1"0);   
  82.                            
  83.                         //下面开始添加单元格   
  84.                         for(int i=0;i<10;i++){   
  85.                                 for(int j=0;j<5;j++){   
  86.                                         //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行   
  87.                                         Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");   
  88.                                         try {   
  89.                                                 //将生成的单元格添加到工作表中   
  90.                                                 ws.addCell(labelC);   
  91.                                         } catch (RowsExceededException e) {   
  92.                                                 e.printStackTrace();   
  93.                                         } catch (WriteException e) {   
  94.                                                 e.printStackTrace();   
  95.                                         }   
  96.   
  97.                                 }   
  98.                         }   
  99.   
  100.                         try {   
  101.                                 //从内存中写入文件中   
  102.                                 wwb.write();   
  103.                                 //关闭资源,释放内存   
  104.                                 wwb.close();   
  105.                         } catch (IOException e) {   
  106.                                 e.printStackTrace();   
  107.                         } catch (WriteException e) {   
  108.                                 e.printStackTrace();   
  109.                         }   
  110.                 }   
  111.         }    
  112.         /**搜索某一个文件中是否包含某个关键字  
  113.          * @param file  待搜索的文件  
  114.          * @param keyWord  要搜索的关键字  
  115.          * @return  
  116.          */  
  117.         public static boolean searchKeyWord(File file,String keyWord){   
  118.                 boolean res = false;   
  119.                    
  120.                 Workbook wb = null;   
  121.                 try {   
  122.                         //构造Workbook(工作薄)对象   
  123.                         wb=Workbook.getWorkbook(file);   
  124.                 } catch (BiffException e) {   
  125.                         return res;   
  126.                 } catch (IOException e) {   
  127.                         return res;   
  128.                 }   
  129.                    
  130.                 if(wb==null)   
  131.                         return res;   
  132.                    
  133.                 //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了   
  134.                 Sheet[] sheet = wb.getSheets();   
  135.                    
  136.                 boolean breakSheet = false;   
  137.                    
  138.                 if(sheet!=null&&sheet.length>0){   
  139.                         //对每个工作表进行循环   
  140.                         for(int i=0;i<sheet.length;i++){   
  141.                                 if(breakSheet)   
  142.                                         break;   
  143.                                    
  144.                                 //得到当前工作表的行数   
  145.                                 int rowNum = sheet[i].getRows();   
  146.                                    
  147.                                 boolean breakRow = false;   
  148.                                    
  149.                                 for(int j=0;j<rowNum;j++){   
  150.                                         if(breakRow)   
  151.                                                 break;   
  152.                                         //得到当前行的所有单元格   
  153.                                         Cell[] cells = sheet[i].getRow(j);   
  154.                                         if(cells!=null&&cells.length>0){   
  155.                                                 boolean breakCell = false;   
  156.                                                 //对每个单元格进行循环   
  157.                                                 for(int k=0;k<cells.length;k++){   
  158.                                                         if(breakCell)   
  159.                                                                 break;   
  160.                                                         //读取当前单元格的值   
  161.                                                         String cellValue = cells[k].getContents();   
  162.                                                         if(cellValue==null)   
  163.                                                                 continue;   
  164.                                                         if(cellValue.contains(keyWord)){   
  165.                                                                 res = true;   
  166.                                                                 breakCell = true;   
  167.                                                                 breakRow = true;   
  168.                                                                 breakSheet = true;   
  169.                                                         }   
  170.                                                 }   
  171.                                         }   
  172.                                 }   
  173.                         }   
  174.                 }   
  175.                 //最后关闭资源,释放内存   
  176.                 wb.close();   
  177.                    
  178.                 return res;   
  179.         }   
  180.     /**往Excel中插入图片  
  181.      * @param dataSheet  待插入的工作表  
  182.      * @param col 图片从该列开始  
  183.      * @param row 图片从该行开始  
  184.      * @param width 图片所占的列数  
  185.      * @param height 图片所占的行数  
  186.      * @param imgFile 要插入的图片文件  
  187.      */  
  188.     public static void insertImg(WritableSheet dataSheet, int col, int row, int width,   
  189.             int height, File imgFile){   
  190.             WritableImage img = new WritableImage(col, row, width, height, imgFile);   
  191.             dataSheet.addImage(img);   
  192.     }    
  193.        
  194.        
  195.     public static void main(String[] args) {   
  196.                 
  197.             try {   
  198.                     //创建一个工作薄   
  199.                         WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls"));   
  200.                         //待插入的工作表   
  201.                         WritableSheet imgSheet = workbook.createSheet("Images",0);   
  202.                         //要插入的图片文件   
  203.                         File imgFile = new File("D:/1.png");   
  204.                         //图片插入到第二行第一个单元格,长宽各占六个单元格   
  205.                         insertImg(imgSheet,0,1,6,6,imgFile);   
  206.                         workbook.write();   
  207.                         workbook.close();   
  208.                 } catch (IOException e) {   
  209.                         e.printStackTrace();   
  210.                 } catch (WriteException e) {   
  211.                         e.printStackTrace();   
  212.                 }               
  213.     }    
  214.            
  215. }   
分享到:
评论
4 楼 king520 2010-12-14  
3 楼 king520 2010-12-14  
2 楼 larva 2010-10-03  
      //插入一行   
           insertRowData(sheet,1,new String[]{"200201001","张三","100","60","100","260"},getDataCellFormat(CellType.STRING_FORMULA));   
              
           //一个一个插入行   
           label = new Label(0, 2,"200201002",getDataCellFormat(CellType.STRING_FORMULA));    
           sheet.addCell(label);   
              
           label = new Label(1, 2,"李四",getDataCellFormat(CellType.STRING_FORMULA));    
           sheet.addCell(label);   
              
           insertOneCellData(sheet,2,2,70.5,getDataCellFormat(CellType.NUMBER));   
           insertOneCellData(sheet,3,2,90.523,getDataCellFormat(CellType.NUMBER));   
           insertOneCellData(sheet,4,2,60.5,getDataCellFormat(CellType.NUMBER));   
  
           insertFormula(sheet,5,2,"C3+D3+E3",getDataCellFormat(CellType.NUMBER_FORMULA));   
              
           //插入日期   
           mergeCellsAndInsertData(sheet, 0, 3, 5, 3, new Date(), getDataCellFormat(CellType.DATE));   
1 楼 hsy537 2007-06-08  
我想问一下,可以实现这样的功能吗?就是有一个execl模板,里面有些地方要填充数据,用jxl可以动态填充数据吗?主要一个难点我感觉就是能否插入一行在原报表的中间部分?

相关推荐

    JXL操作EXCEL的各个类的解析.doc

    JXL 操作 EXCEL 的各个类的解析 JXL 操作 EXCEL 的各个类的解析是 Java 语言中操作 Excel 文件的主要方法之一。JXL 通过提供了多种类来实现对 Excel 文件的读写操作。 首先,JXL 提供了一个抽象类 Workbook,该类...

    Java jxl操作Excel97-2003 eclipse可运行项目实例

    这个"Java jxl操作Excel97-2003 eclipse可运行项目实例"提供了一个实用的示例,帮助开发者了解如何在Eclipse环境中使用jxl库与Excel97-2003版本的文件进行交互。 1. **jxl库介绍** jxl库是Java编程语言中的一个...

    关于jxl操作excel说明以及jxl.jar包下载2.6

    标题"关于jxl操作excel说明以及jxl.jar包下载2.6"表明我们将探讨如何使用JXL库以及在哪里获取它的特定版本(2.6)。 首先,让我们深入了解一下JXL库。JXL是Java Excel API的简称,它提供了一套完整的API,可以创建...

    利用jxl操作excel文件

    本篇将详细介绍如何利用`jxl`库来操作Excel文件,并结合实例说明如何从Excel文件中提取数据并生成TXT文件。 首先,我们需要理解`jxl`库的基本结构。`jxl`库主要提供了`Workbook`、`Sheet`、`Cell`等类,分别对应...

    JXL操作excel设置字体颜色设置单元格详解

    JXL操作Excel设置字体颜色设置单元格详解 JXL是一个韩国人写的Java操作Excel的工具,在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文...

    jxl操作excel.pdf

    Java中的JExcelAPI是一个用于操作Microsoft Excel文件的库,尤其适用于需要在Java应用程序中读取、写入或修改Excel数据的场景。与Apache POI相比,JExcelAPI更轻量级,对中文支持良好,且不需要依赖Windows系统,...

    jxl 操作excel Demo

    这个"jxl操作excel Demo"显然是一份示例代码,它展示了如何使用jxl库来与Excel文件进行交互。以下是对jxl库和其在处理Excel文件中使用方法的详细说明。 1. **jxl库介绍** jxl是一个开源的Java库,允许开发者在Java...

    jxl操作excel文件

    ### jxl操作Excel文件知识点详解 #### 一、jxl简介 jxl 是一款用于 Java 环境下的 Excel 操作库,由一位韩国开发者所编写。与 Apache POI 相比,jxl 的功能略显简单,但在中文支持方面表现出色。jxl API 不依赖于...

    jxl操作excel文件例子

    标题“jxl操作excel文件例子”指的是利用JXL库进行Excel文件处理的实际应用。描述中提到的“通过jxl操作excel,简单方便”,暗示了JXL库的一个关键优点——简洁易用的API,使得对Excel文件的操作变得相当直观。 JXL...

    JXL操作EXCEL 数据库导出EXCEL相关文件

    本篇文章将深入探讨JXL库在操作Excel和数据库导出Excel文件方面的应用。 首先,我们来了解JXL的基本用法。JXL支持读取和写入Biff8格式的Excel文件(即97-2003版本的.XLS文件),这涵盖了大部分常见的Excel文件需求...

    JXL操作EXCEL(详)

    标题"JXL操作EXCEL(详)"暗示我们将深入探讨JXL库如何处理Excel文件的各种细节,包括公式、颜色、表格、百分比和小数点等元素的处理。 首先,**JXL的安装与引入**。要使用JXL,你需要将jxl.jar添加到项目的类路径中...

    使用jxl操作excle文件

    在本文中,我们将深入探讨如何使用JXL来操作Excel文件。 1. **安装与导入** 在项目中使用JXL,首先需要下载JXL库,可以从其官方网站或Maven仓库获取。然后将其jar文件添加到项目的类路径中。如果你使用的是Maven,...

    jxl操作Excel简单

    `jxl操作Excel.docx`文件很可能是JXL的API文档,其中包含了详细的类、方法和参数说明,是开发时的重要参考资源。建议仔细阅读并理解每个类和方法的功能,以便更好地利用JXL进行Excel操作。 9. **JXL标签的用途** ...

    公司真正项目使用jxl操作excel代码程序

    本项目中的“公司真正项目使用jxl操作excel代码程序”是一个具体的实例,展示了如何利用Java的jxl库来与Excel文件进行交互,以满足公司报表打印的需求。 jxl是一个开源的Java库,它允许开发人员读取、写入和修改...

    用jxl操作excel实例

    标题中的“用jxl操作excel实例”指的是使用Java Excel API(简称JXL)来处理Microsoft Excel文件的一个实际应用。JXL是一个开源库,允许Java开发者读取、写入和修改Excel电子表格。在这个Spring MVC工程中,JXL被...

    jxl 操作EXCEL格式

    **JXL库简介** JXL(Java Excel API)是一个开源的Java库,专门用于读取、写入和修改Microsoft Excel文件。...JXL支持多种Excel功能,包括单元格样式、公式...希望这个简短的介绍对你在使用JXL操作Excel格式时有所帮助。

    jxl操作EXCEL的好东西

    在标题“jxl操作EXCEL的好东西”中,"jxl"指的是这个库,它为Java开发者提供了一种方便的方式来处理Excel数据,而无需依赖Microsoft Office套件。描述中的“好东西”暗示了jxl库的易用性和实用性,使得开发者可以...

    java中jxl操作excel

    ### Java中jxl操作Excel详解 #### 一、jxl简介与优势 jxl是一个用于在Java中操作Microsoft Excel文件的开源库。虽然其功能相较于Apache POI可能略显简单,但在处理中文字符方面表现优异,且由于其纯Java实现,无需...

    jxl操作excle源码例子

    ### jxl 操作 Excel 源码例子解析 在 Java 开发中,处理 Excel 文件是一项常见的任务。jxl 是一个非常流行的 Java 库,用于读取和写入 Excel 文件(.xls)。本文将通过分析一个具体的示例代码,来详细介绍如何使用 ...

    jxl操作excel实例,jxl jar包下载

    本文将详细介绍如何使用`jxl`库进行Excel操作,并提供一个简单的实例。 首先,`jxl.jar`是`jxl`库的主要组件,你需要将其添加到你的项目类路径中。这可以通过将`jxl.jar`放在`lib`目录下或在IDE(如Eclipse、...

Global site tag (gtag.js) - Google Analytics