LIULIANG

jxl读取excel文件操作

在进行测试之前,首先在网上下载jxl.jar文件,放到classpath路径下或者放到你的工程中(效果一样,其实就是要在classpath能够找到这个jar包)

好了,下面现在开始做例子


第一步:创建excel文件 CreateExcel.java

  1. <pre name="code" class="java">package com.lrb.jxl.test;  
  2.   
  3. import java.io.File;  
  4.   
  5. import jxl.Workbook;  
  6. import jxl.write.Label;  
  7. import jxl.write.Number;  
  8. import jxl.write.WritableSheet;  
  9. import jxl.write.WritableWorkbook;  
  10.   
  11. public class CreateExcel {  
  12.       
  13.     public static void main(String[] args) {  
  14.         try{  
  15.             //创建并打开文件c:\\test.xls  
  16.             WritableWorkbook book = Workbook.createWorkbook(new File("C:\\test.xls"));  
  17.             //生成名为“第一页”的工作表,参数0表示这是第一页  
  18.             WritableSheet sheet  = book.createSheet("第一页"0);  
  19.             //在Label对象的构造子中指名单元格位置是第一行第一列(0,0)  
  20.             //以及单元格内容“test”  
  21.             Label l = new Label(0,0,"test");  
  22.             //l.setString("this is name");  设置此格内容  
  23.             //将定义好的单元格添加到工作表中  
  24.             sheet.addCell(l);  
  25.             /** 
  26.              * 生成一个保存数字的单元格  
  27.              * 必须使用Number的完整包路径,否则有语法歧义  
  28.              * 单元格位置是第二列,第一行,值为3.1415926 
  29.              */  
  30.             Number number = new Number(1,0,3.1415926);  
  31.             sheet.addCell(number);  
  32.             book.write();  
  33.             book.close();  
  34.         }catch (Exception e) {  
  35.             e.printStackTrace();  
  36.         }  
  37.     }  
  38.   
  39. }  
第二步:更新excel文件 UpdateExcel.java

  1. package com.lrb.jxl.test;  
  2.   
  3. import java.io.File;  
  4.   
  5. import jxl.Workbook;  
  6. import jxl.write.Label;  
  7. import jxl.write.WritableCellFormat;  
  8. import jxl.write.WritableFont;  
  9. import jxl.write.WritableSheet;  
  10. import jxl.write.WritableWorkbook;  
  11. import jxl.write.WritableFont.FontName;  
  12.   
  13. public class UpdateExcel {  
  14.   
  15.     public static void main(String[] args) {  
  16.         try {  
  17.             //excel获得文件  
  18.             Workbook wb = Workbook.getWorkbook(new File("C:\\test.xls"));  
  19.             //打开一个文件的副本,并且指定数据写回到原文件  
  20.             WritableWorkbook book = Workbook.createWorkbook(new File("c:\\test.xls"),wb);  
  21.             //添加一个工作表  
  22.             //WritableSheet sheet = book.createSheet("second sheet",1);  
  23.             WritableSheet sheet = book.getSheet("second sheet"); //用于第二次读取使用  
  24.             /** 
  25.              * 单元格操作 
  26.              */  
  27.             //合并单元格操作(合并第一列第一行到第一列第六行的所有单元格)。合并后的单元格不能再次进行合并,否则会触发异常  
  28.             sheet.mergeCells(0005);  
  29.             //设置第一行的高度为200  
  30.             sheet.setRowView(0200);  
  31.             //设置第一列的宽度为20  
  32.             sheet.setColumnView(030);  
  33.             /** 
  34.              * 字符串格式化操作 
  35.              */  
  36.             //指定字串格式:字体为TIMES,字号16,加粗显示  
  37.             WritableFont font = new WritableFont(WritableFont.TIMES,12,WritableFont.BOLD);  
  38.             //WritableCellFormat 指定单元格的各种属性  
  39.             WritableCellFormat format1 = new WritableCellFormat(font);  
  40.             // 把水平对齐方式指定为居中   
  41.             format1.setAlignment(jxl.format.Alignment.CENTRE);  
  42.             // 把垂直对齐方式指定为居中   
  43.             format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);  
  44.             //Label类的构造子,指定了字串被赋予那种格式  
  45.             sheet.addCell(new Label(0,0,"第二页测试数据",format1));  
  46.             book.write();  
  47.             book.close();  
  48.         } catch (Exception e) {  
  49.             e.printStackTrace();  
  50.         }  
  51.   
  52.     }  
  53.   
  54. }  

第三步:读取excel打印   ReadExcel.java

  1. <span style="font-size:10px;">package com.lrb.jxl.test;  
  2.   
  3. import java.io.File;  
  4. import java.io.IOException;  
  5. import java.text.SimpleDateFormat;  
  6.   
  7. import jxl.Cell;  
  8. import jxl.CellType;  
  9. import jxl.DateCell;  
  10. import jxl.NumberCell;  
  11. import jxl.Sheet;  
  12. import jxl.Workbook;  
  13. import jxl.read.biff.BiffException;  
  14.   
  15. public class ReadExcel {  
  16.   
  17.     public static void main(String[] args) throws BiffException, IOException {  
  18.         //打开文件  
  19.         Workbook book = Workbook.getWorkbook(new File("C:\\test.xls"));  
  20.         //获得第一个工作表对象  
  21.         Sheet sheet = book.getSheet(0);  
  22.         //如果知道工作表的名字,也可使用如下方法获得指定名称的工作表对象  
  23.         Sheet sheet1 = book.getSheet("second sheet");  
  24.         //获得第一列第一行的单元格  
  25.         Cell cell = sheet.getCell(00);  
  26.         String result = cell.getContents();  
  27.         //获得工作表名称  
  28.         System.out.println("第一个工作表名称:"+sheet.getName());  
  29.         //获得列数  
  30.         System.out.println("列数:"+sheet.getColumns());  
  31.         //获得行数  
  32.         System.out.println("行数"+sheet.getRows());  
  33.         System.out.println("根据下标取得第一列第一行数据:"+result);  
  34.         /** 
  35.          * 在用jxl解析excle的时候,如果excel中有小数, 
  36.          * 如果小数点后的位数多的化,可能会用科学技术法来显示结果, 
  37.          * 为了避免显示科学计数法,可以通过两个办法来解决 
  38.          * 1:将excel的小数的cell格的格式改成字符串型。 
  39.          * 2:用下面的程序处理。 
  40.          */  
  41.         Cell cel = sheet.getCell(1,0);  
  42.         String data = cel.getContents();  
  43.         if(cel.getType() == CellType.DATE){  
  44.             DateCell dc = (DateCell)cel;  
  45.             data = new SimpleDateFormat("YYYY-MM-DD").format(dc.getDate());  
  46.         }else if(cel.getType() == CellType.NUMBER || cel.getType() == CellType.NUMBER_FORMULA){  
  47.             NumberCell nc = (NumberCell) cel;  
  48.             data = ""+nc.getValue();  
  49.         }  
  50.           
  51.         System.out.println("第二列第一行数据:"+data);  
  52.         System.out.println("=====================================");  
  53.           
  54.         Cell cell1 = sheet1.getCell(00);  
  55.         String result1 = cell1.getContents();  
  56.         //获得工作表名称  
  57.         System.out.println("第一个工作表名称:"+sheet1.getName());  
  58.         //获得列数  
  59.         System.out.println("列数:"+sheet1.getColumns());  
  60.         //获得行数  
  61.         System.out.println("行数"+sheet1.getRows());  
  62.         System.out.println("根据名称得到sheet数据第一列第一行:"+result1);  
  63.         book.close();  
  64.     }  
  65. }</span><span style="font-weight: bold; font-size: 16px; ">  
  66. </span>  

    题外话:jxl目前不支持2007及其以后的版本,如果需要可以使用POI。如果你是2007或以上版本,切记不可通过直接修改文件后缀名来使其支持文件的读写操作。


    转自:

posted on 2012-04-23 23:16 BIG森林 阅读(578) 评论(0)  编辑 收藏 引用 所属分类: java


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2012年4月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

导航

统计

常用链接

留言簿(2)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜