类型不匹配:无法从HSSFWorkbook转换为Workbook

时间:2015-03-19 13:10:14

标签: java ant apache-poi classpath

我有以下代码。

Workbook srcWorkBook;
Workbook tgtWorkbook;
if((src.substring(src.lastIndexOf("."),src.length()).equals(".xlsx"))){
    srcWorkBook=new XSSFWorkbook(excelFileSrc);
}else{
    srcWorkBook=new HSSFWorkbook(excelFileSrc);
}

它通过独立文件正常运行,但在我的ant编译期间,它抛出了错误

 [javac] found   : org.apache.poi.hssf.usermodel.HSSFWorkbook
 [javac] required: org.apache.poi.ss.usermodel.Workbook

我检查了我的类路径,它没有任何重复的Jars实例。请帮忙

1 个答案:

答案 0 :(得分:0)

首先,该错误表明您在类路径上有一个较旧的主Apache POI jar副本,或者使用了不匹配的POI jar。有关可帮助您追踪实际使用的jar的代码,请参阅this POI FAQ entry,有关在不受支持的版本之间混合POI jar的更多信息,请参阅this POI FAQ entry

其次,您的代码本身并不理想。相反,您应该使用WorkbookFactory为您实例化正确的Workbook类。将代码更改为:

Workbook srcWorkBook = WorkbookFactory.create(new File(excelFileSrc));

这将为您识别文件类型,并为您创建HSSFWorkbookXSSFWorkbook中的正确文件类型