天天看点

jxl学习笔记一,文件格式

源文件:

public static void main(String[] args) throws BiffException, IOException {

  File excel=new File("D:\\UploadFile\\1389066633586.xls");

  Workbook wb = Workbook.getWorkbook(excel);

  Sheet sheet = wb.getSheet(0);

  for(int i =0;i<sheet.getRows();i++){

   for(int j=0;j<sheet.getColumns();j++){

    Cell cell = sheet.getCell(j, i);

    if(cell.getType()==CellType.NUMBER){

     System.out.println(cell.getClass());

     try{

      NumberCell n =(NumberCell)cell;

      System.out.println(n.getValue()+10);

     }catch(Exception e){

      System.out.println("cast NumberCell Exception");

     }

     try{

      Number nn =(Number)cell;

     }catch(Exception e){

      System.out.println("cast Number Exception");

     }

     System.out.println("-----------------------------------");

    }

   }

  }

 }

一,不是所有excel文件都可以解析

一些通过网页生成的excel文件,虽然扩展名是xls,用wps也可以正常打开,但是用jxl解析的时候会直接报错

Workbook wb = Workbook.getWorkbook(file);

报错:

Exception in thread "main" jxl.read.biff.BiffException: Unable to recognize OLE stream

 at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116)

 at jxl.read.biff.File.<init>(File.java:127)

 at jxl.Workbook.getWorkbook(Workbook.java:221)

 at jxl.Workbook.getWorkbook(Workbook.java:198)

 at TestJxl.ExcelJxl.main(ExcelJxl.java:17)

而用notepad++直接打开该excel文件可以看到,文件内容为

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta name="Generator" content="Microsoft Excel 11" />

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<style>

.n {

 vnd .ms-excel.numberformat: @

}

</style>

</head>

<body>

 <table id="table" cellspacing="0" cellpadding="0"

  style="BORDER-COLLAPSE: collapse" bordercolor="#666666"

  align="center">

//此处省略

</table>

</body>

</html>

可以知道该文件实际上是一个Html文件,如果用wps打开该文件,另存为时也会显示为html文件,当另存为xls文件后就可以用jxl解析了