天天看點

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解析了