zoukankan      html  css  js  c++  java
  • JXL基本操作

    一、jxl.jar概述

    • 通过java操作excel表格的工具类库
    • 支持Excel 95-2000的所有版本
    • 生成Excel 2000标准格式
    • 支持字体、数字、日期操作
    • 能够修饰单元格属性
    • 支持图像和图表

      应该说以上功能已经能够大致满足我们的需要。最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。

    Java Excel API 文档 

    http://www.andykhan.com/jexcelapi/

    二、搭建环境

      将下载后的文件解包,得到JXL.JAR,放入classpath。如果包不能正常的加载,可以把你下载好的JXL.JAR包放入本机jre的安装目录下,例如 D:JAVAjrelibext中。如果想在Eclipse的一个项目中导入JXL.JAR,在该项目上右键,点击“属性”,类别那里选择”库“,点击"添加外部jar”在弹出的文件选择对话框选择你的jxl.jar。

    三、创新文件:

    新建一个名"Test.xls"的Excel文件,其中第一个工作表被命名为“sheet_one”,代码如下,编译执行后,会在当前位置产生一个Excel文件。

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

    四、读取文件:

     使用我们上面创建的Excel文件为例,做一个简单的读取操作,程序代码如下:

     1 package com.test;
     2 
     3 import jxl.*;
     4 import jxl.read.biff.BiffException;
     5 
     6 import java.io.*;
     7 
     8 public class ReadExcel {
     9 
    10     public static void main(String[] args) throws BiffException, IOException {
    11         Workbook book = Workbook.getWorkbook(new File("Test.xls"));
    12         
    13         //获得第一个工作表对象  
    14         Sheet sheet = book.getSheet("sheet_one");
    15         //Sheet sheet = book.getSheet(0);
    16         
    17         int rows = sheet.getRows();
    18         int cols = sheet.getColumns();
    19         
    20         System.out.println("总列数:" + cols);
    21         System.out.println("总行数:" + rows);
    22         System.out.println("----------------------------");    
    23         
    24         int i=0;
    25         int j=0;
    26         //循环读取数据
    27         for(i=0;i<cols;i++)
    28         {
    29             for(j=0;j<rows;j++)
    30             {
    31                 System.out.println("第"+j+"行,第"+i+"列为:"+sheet.getCell(i, j).getContents());
    32             }
    33             
    34         }
    35 
    36     }
    37 
    38 }

    输出结果:

    总列数:1
    总行数:2
    ----------------------------
    第0行,第0列为:Hello World
    第1行,第0列为:123.456

    五、修改文件:

       利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表:

     1 package com.test;
     2 
     3 import jxl.*;
     4 import java.io.*;
     5 
     6 import jxl.read.biff.BiffException;
     7 import jxl.write.*;
     8 import jxl.write.biff.RowsExceededException;
     9 
    10 
    11 public class UpdateExcel {
    12 
    13     public static void main(String[] args) throws BiffException, IOException, RowsExceededException, WriteException{
    14          //获得文件    
    15         Workbook wb = Workbook.getWorkbook(new File ("Test.xls"));
    16         
    17         //打开一个文件的副本,并且指定数据写回到原文件
    18         WritableWorkbook book = Workbook.createWorkbook(new File ("Test.xls"), wb);
    19         
    20          //添加一个工作表 
    21         WritableSheet sheet = book.createSheet("sheet_two", 1);
    22         
    23         sheet.addCell(new Label(0,0,"Test data for sheet_two"));
    24         
    25         //输出
    26         System.out.println(sheet.getCell(0, 0).getContents());
    27         
    28         book.write();
    29         book.close();
    30         
    31     }
    32 
    33 }

    输出:

    Test data for sheet_two

  • 相关阅读:
    Linux搭建ElasticSearch环境
    从DDD开始说起
    TFS看板晨会
    TFS看板的迭代规划
    TFS看板规则
    TFS看板的设计
    Api容器在应用架构演化中的用途
    基于Abp的WebApi容器
    线程队列
    动态类型序列化
  • 原文地址:https://www.cnblogs.com/puresoul/p/3502139.html
Copyright © 2011-2022 走看看