得到错误" org.apache.poi.hssf.usermodel.HSSFRow无法强制转换为org.apache.poi.ss.usermodel.Row"

时间:2014-03-26 06:08:12

标签: java excel apache-poi

我正在编写java代码来读取具有列名“Key”和“Value”的excel文件。但是因为无法在这行代码中投射错误,

row firstRow =(Row)sheet.getRow(0);

如何解决此错误请帮助我。

public static void main(String[] args) throws Exception {       
FileInputStream fileIn = new FileInputStream("c://param_2003.xls");
POIFSFileSystem fs = new POIFSFileSystem(fileIn); 
HSSFWorkbook filename = new HSSFWorkbook(fs);
HSSFSheet sheet = filename.getSheetAt(0);

String column1 = "Key";
String column2 = "Value";
Integer columnNo1 = null;
Integer columnNo2 = null;
List<Cell> cells = new ArrayList<Cell>();
Row firstRow =(Row)sheet.getRow(0);

for(org.apache.poi.ss.usermodel.Cell cell:firstRow){
    if (cell.getStringCellValue().equals(column1)){
        columnNo1 = cell.getColumnIndex();
    }
}

for(org.apache.poi.ss.usermodel.Cell cell:firstRow){
    if (cell.getStringCellValue().equals(column2)){
        columnNo2 = cell.getColumnIndex();
    }
}
System.out.println(columnNo1);
System.out.println(columnNo2);

}

2 个答案:

答案 0 :(得分:4)

您的类路径中存在错误匹配的Apache POI jar。您需要确保所有的Apache POI罐都来自同一版本,如果您将旧的罐子组合在一起,那么事情将无法发挥作用。

要查看您需要的罐子,请查看列出它们及其依赖项的Apache POI Components page

要弄清楚您实际使用的罐子(可能不是您认为正在使用的罐子),请参阅first Apache POI FAQ entry

中的代码段。

一旦你拥有一套一致的POI罐子(截至编写时将基于3.10),它应该没问题

答案 1 :(得分:0)

仅选择一个POI库。