源文件:
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" border="1"
align="center">
//此处省略
</table>
</body>
</html>
可以知道该文件实际上是一个Html文件,如果用wps打开该文件,另存为时也会显示为html文件,当另存为xls文件后就可以用jxl解析了