jxl.jar(JExcel)的使用

JExcel API

简介:

  大多数情况下,应用程序需要生成一些报告。 在excel中生成这些报告可能是一个不错的方法,因为大多数人都知道如何使用excel,除此之外,它还提供了共享报告的灵活性。 在这个简短的系列教程中,我们将看到如何使用JExcel API处理Java中的Excel文件。

读取excel文件

  在本教程中,我们将使用JExcel API以Java语言读取Excel文件。 这里是我们将阅读的Excel文件:

  在本教程中,请确保您下载最新版本的jexcelapi,并将其放在您的计算机或eclipse项目的classpath路径下。 或者,您可以下载附在本页末尾的eclipse项目,它已经包含了API。

  JavaExcelExport.zip

  test.xls

  这是读取excel文件并显示其内容的程序的Java源代码:

public static void main(String[] args) {
        try {
            //从指定位置的文件创建工作簿对象;根据计算机上的位置更改文件的路径。            
            Workbook wrk1 = Workbook.getWorkbook(new File("C:/test.xls"));
//获取工作簿中第一个工作表的引用 Sheet sheet1 = wrk1.getSheet(0);
//使用工作表的getCel(int col, int row)方法获取对单元的引用 Cell colArow1 = sheet1.getCell(0, 0); Cell colBrow1 = sheet1.getCell(1, 0); Cell colArow2 = sheet1.getCell(0, 1);
//使用单元格引用的getContents()方法获取单元格的内容,返回值为一个字符串 String str_colArow1 = colArow1.getContents(); String str_colBrow1 = colBrow1.getContents(); String str_colArow2 = colArow2.getContents(); // 显示单元格内容 System.out.println("Contents of cell Col A Row 1: \"" + str_colArow1 + "\""); System.out.println("Contents of cell Col B Row 1: \"" + str_colBrow1 + "\""); System.out.println("Contents of cell Col A Row 2: \"" + str_colArow2 + "\"");
}
catch (BiffException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }

  1)下面一行创建封装Excel文件的Workbook对象。 本例中,getWorkbook()方法接受指向位于“C:/test.xls”处的Excel文件的File对象。

Workbook wrk1 =  Workbook.getWorkbook(new File("C:/test.xls"));

  2)下面的行用于获取Excel文件中第一个工作表。 以类似方式,如果您正在处理的Excel文件有多个工作表,则可以获取任何其他工作表。

Sheet sheet1 = wrk1.getSheet(0);

  3)下面的代码根据传递给getCell方法的参数为我们提供了对工作表中特定单元格的引用。 第一个参数表示列,第二个参数表示行。 确保只访问非空单元格,否则此方法将抛出ArrayIndexOutOfBoundsException。

Cell colArow1 = sheet1.getCell(0, 0);

  4)下面这行调用getContents()方法提取Cell的内容。 内容以字符串形式返回。

String str_colArow1 = colArow1.getContents();

  运行结果:

 

使用不同的数据类型读取Excel文件

   正如在前面的教程中指出的那样,在实际应用程序中,您可能不得不处理除String之外的多个数据类型的Excel文件数据。 在本教程中,我们将使用不同的数据类型读取Java中的excel文件。

  我们将尝试读取下面的excel,因为可以看出,excel在前四个单元中有Date,Number,Boolean和Label(常规字符串)数据。

  这是读取excel文件并显示其内容的程序的Java源代码:

 public static void main(String[] args) {     
        //从指定位置的文件创建工作簿对象;根据计算机上的位置更改文件的路径。
        Workbook wrk1;
        try {
            wrk1 = Workbook.getWorkbook(new File("C:/test.xls"));

            //获取工作簿中第一个工作表的引用
            Sheet sheet1 = wrk1.getSheet(0);

           //使用工作表的getCel(int col, int row)方法获取对单元的引用
            Cell cell1 = sheet1.getCell(0, 0);
            Cell cell2 = sheet1.getCell(1, 0);
            Cell cell3 = sheet1.getCell(2, 0);
            Cell cell4 = sheet1.getCell(3, 0);

            DateCell dCell = null;
            NumberCell nCell = null;
            BooleanCell bCell = null;
            LabelCell lCell = null;

            // 检查单元格内容的类型,并将该对象转换为适当的引用类型
            if (cell1.getType() == CellType.DATE)
                dCell = (DateCell) cell1;

            if (cell2.getType() == CellType.NUMBER)
                nCell = (NumberCell) cell2;

            if (cell3.getType() == CellType.BOOLEAN)
                bCell = (BooleanCell) cell3;

            if (cell4.getType() == CellType.LABEL)
                lCell = (LabelCell) cell4;

            // 显示单元格内容
            System.out.println("Value of Date Cell is: " + dCell.getDate());
            System.out.println("Value of Number Cell is: " + nCell.getValue());
            System.out.println("Value of Boolean Cell is: " + bCell.getValue());
            System.out.println("Value of Label Cell is: " + lCell.getString());

        } catch (BiffException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

  1)下面一行创建封装Excel文件的Workbook对象。 本例中,getWorkbook()方法接受指向位于“C:/test.xls”处的Excel文件的File对象。

Workbook wrk1 =  Workbook.getWorkbook(new File("C:/test.xls"));

  2)下面的行用于获取Excel文件中第一个工作表。 以类似方式,如果您正在处理的Excel文件有多个工作表,则可以获取任何其他工作表。

Sheet sheet1 = wrk1.getSheet(0);

  3)下面的代码根据传递给getCell方法的参数为我们提供了对工作表中特定单元格的引用。 第一个参数表示列,第二个参数表示行。 确保只访问非空单元格,否则此方法将抛出ArrayIndexOutOfBoundsException。

Cell cell1 = sheet1.getCell(0, 0);

  4)下面几行创建DateCell(日期类型数据)、NumberCell(数值类型数据)、BooleanCell(布尔类型数据)、:LabelCell(字符串数据)

DateCell dCell=null;
NumberCell nCell=null;
BooleanCell bCell=null;
LabelCell lCell=null;

  5)在下面的行中,我们调用Cell对象的getType()方法。 此方法返回表示Cell内容的数据类型的枚举。并将其转换为相应类型的Cell对象。

if(cell1.getType() == CellType.DATE)
     dCell = (DateCell)cell1;     
if(cell2.getType() == CellType.NUMBER)
     nCell = (NumberCell)cell2;     
if(cell3.getType() == CellType.BOOLEAN)
     bCell = (BooleanCell)cell3;     
if(cell4.getType() == CellType.LABEL)
     lCell = (LabelCell)cell4;

  6)最后我们打印单元格的值。 DateCell对象的getDate()方法返回Cell的日期内容。 NumberCell和BooleanCell对象的getValue()方法分别返回单元格的数值(双精度)和布尔值内容。 LabelCell对象的getString()方法返回Cell上的String内容。

System.out.println("Value of Date Cell is: " + dCell.getDate());
System.out.println("Value of Number Cell is: " + nCell.getValue());
System.out.println("Value of Boolean Cell is: " + bCell.getValue());
System.out.println("Value of Label Cell is: " + lCell.getString());

  输出结果:

 

  总之,在本教程中,我们看到了如何使用jexcelapi读取包含Java中不同数据类型的Excel文件。 在本系列的下一篇教程中,我们将看到如何写入excel文件。

  附件:

  JavaExcelReadDataTypes.zip (659KB)

  test.xls (6.5KB)   

 

写入Excel

  

  

猜你喜欢

转载自www.cnblogs.com/maxudong/p/8951565.html
jxl