源檔案:
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解析了