POI读取Excel异常

代码如下:

package net.tycmc.bulb.excel;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class ReadMyExcel {
public static void main(String[] args) throws Exception {
InputStream is = new FileInputStream(new File("c://各小区常住人口登记汇总.xls"));
//根据输入流创建Workbook对象
Workbook wb = WorkbookFactory.create(is);
//get到Sheet对象
Sheet sheet = wb.getSheetAt(0);
//这个必须用接口
for(Row row : sheet){
for(Cell cell : row){
//cell.getCellType是获得cell里面保存的值的type
//如Cell.CELL_TYPE_STRING
switch(cell.getCellType()){
case Cell.CELL_TYPE_BOOLEAN:
//得到Boolean对象的方法
System.out.print(cell.getBooleanCellValue()+" ");
break;
case Cell.CELL_TYPE_NUMERIC:
//先看是否是日期格式
if(DateUtil.isCellDateFormatted(cell)){
//读取日期格式
System.out.print(cell.getDateCellValue()+" ");
}else{
//读取数字
System.out.print(cell.getNumericCellValue()+" ");
}
break;
case Cell.CELL_TYPE_FORMULA:
//读取公式
System.out.print(cell.getCellFormula()+" ");
break;
case Cell.CELL_TYPE_STRING:
//读取String
System.out.print(cell.getRichStringCellValue().toString()+" ");
break;
}
}
System.out.println("");
}
}
}

异常信息如下:
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.poi.poifs.filesystem.POIFSFileSystem.hasPOIFSHeader(Ljava/io/InputStream;)Z
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:59)
at net.tycmc.bulb.excel.ReadMyExcel.main(ReadMyExcel.java:28)

你的lib里面缺少依赖的jar包。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-14
代码如果没有报错的话,可能是引入的jar版本问题。
虽然编译没报错但是内部的jar包相互调用可能版本不协调出的错。
第2个回答  2011-02-14
他说你28行有问题,不存在这个方法
第3个回答  2011-02-14
建议用HSSFWorkBook,HSSFCell....
相似回答