首页 > 代码库 > 使用JXL对Excel表格进行简单的操作

使用JXL对Excel表格进行简单的操作

  前段时间由于项目的需求,要求使用JXL,做完之后做下记录,方便以后查看!

  首先我们要先下载JXL的JAR包:http://download.csdn.net/detail/u013352832/7777047

  将JXL.JAR 包导入到项目中即可直接只用!

  直接上代码

  使用JXL来操作Excel表格,我们应该首先判断一下Excel表格是否存在

  

1 File file = new File(user.getZkfp());2 // 判断zkfp.xls文件是否存在,不存在则创建zkfp.xls文件,存在则进行修改3 if (!file.exists() && !file.isDirectory()) {4     //Excel表格不存在5 } else {6     //Excel表格已存在7 }

 

  使用JXL创建Excel表格:

  

 1 package  test; 2   3  // 生成Excel的类  4  import  java.io.File; 5   6  import  jxl.Workbook; 7  import  jxl.write.Label; 8  import  jxl.write.WritableSheet; 9  import  jxl.write.WritableWorkbook;10  11  public   class  CreateExcel  {12       public   static   void  main(String args[])  {13           try   {14               //  打开文件 15              WritableWorkbook book  =  Workbook.createWorkbook( new  File( " test.xls " ));16               //  生成名为“第一页”的工作表,参数0表示这是第一页 17              WritableSheet sheet  =  book.createSheet( " 第一页 " ,  0 );18               //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)19               //  以及单元格内容为test 20              Label label  =   new  Label( 0 ,  0 ,  " test " );21  22               //  将定义好的单元格添加到工作表中 23              sheet.addCell(label);24  25               /* 26               * 生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 单元格位置是第二列,第一行,值为789.12327                */ 28              jxl.write.Number number  =   new  jxl.write.Number( 1 ,  0 ,  555.12541 );29              sheet.addCell(number);30  31               //  写入数据并关闭文件 32              book.write();33              book.close();34  35          }   catch  (Exception e)  {36              System.out.println(e);37          } 38      } 39  } 

如果想修改Excel表格的话,可以直接使用以上代码进行修改,先打开Excel表格,在获取工作表,就可以进行设置进行修改了。

在开发中有时候我们还需要读取Excel表格获取数据,代码如下:

 1 package  test; 2   3  // 读取Excel的类  4  import  java.io.File; 5   6  import  jxl.Cell; 7  import  jxl.Sheet; 8  import  jxl.Workbook; 9  10  public   class  ReadExcel  {11       public   static   void  main(String args[])  {12           try {13              Workbook book  =  Workbook.getWorkbook( new  File( " test.xls " ));14               //  获得第一个工作表对象 15              Sheet sheet  =  book.getSheet( 0 );16               //  得到第一列第一行的单元格 17              Cell cell1  =  sheet.getCell( 0 ,  0 );18              String result  =  cell1.getContents();19              System.out.println(result);20              book.close();21          }   catch  (Exception e)  {22              System.out.println(e);23          } 24      } 25  } 

 

在实际开发中,我们还可能面临对已经有数据的Excel表格进行添加数据、添加工作表等操作,在添加数据时我们需要将数据添加到最后一行,而数据总共有多少行是我们需要获取到的,代码如下:

 1      /** 2      * 添加数据      3      * @param numberno 4      * @param route 路径 5      * @param name 6      */ 7     public void savwUser(String numberno, String route, String name) { 8         try { 9             // 打开文件10             Workbook book = Workbook.getWorkbook(new File(route));11             // 获得第一个工作表对象12             Sheet sheet1 = book.getSheet(0);13             // 获得第一个工作表对象14             Sheet sheet2 = book.getSheet(1);15             // 获取行16             int length1 = sheet1.getRows();17             int length2 = sheet2.getRows();18 19             // 根据book创建一个操作对象20             WritableWorkbook wbook = Workbook.createWorkbook(new File(route),21                     book);22             // 得到一个工作对象23             WritableSheet sh1 = wbook.getSheet(0);24             WritableSheet sh2 = wbook.getSheet(1);25 26             // 创建用户表数据27             jxl.write.Number user11 = new jxl.write.Number(0, length1, length1-1);28             Label user12 = new Label(1, length1 + 1, numberno);29             Label user13 = new Label(2, length1 + 1, route);30             Label user14 = new Label(3, length1 + 1, name);31             // 将用户表数据添加到用户表上32             sh1.addCell(user11);33             sh1.addCell(user12);34             sh1.addCell(user13);35             sh1.addCell(user14);36             37             // 创建时间表数据38             jxl.write.Number label0 = new jxl.write.Number(0, length2,39                     length2 - 1);40             Label label = new Label(1, length2, numberno);41             Label createDate = new Label(2, length2, df.format(new Date()));42             // 将时间表数据添加到时间表上43             sh2.addCell(label0);44             sh2.addCell(label);45             sh2.addCell(createDate);46 47             wbook.write();48             wbook.close();49 50         } catch (Exception e) {51             System.out.println(e);52         }53     }    


在使用JXL操作Excel表格时需要注意的是:我们在添加数据的时候数据要求最好入座,所以行和列要特别注意,在创建和获取工作表时是从下表0开始的!

插入时间数据时需要特别注意,我刚开始是直接new Date()获取时间插入数据,获取进行测试的时候,时间偏差很严重,后来就将时间格式化为字符串插入进去就解决了这一问题

格式化时间:

 1 // 设置日期格式 2 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 3 df.format(new Date())