Poi API XSSFWorkbook工作表演员表EXCEPTION

时间:2018-07-26 06:15:54

标签: java selenium-webdriver apache-poi

package apsel5;

import java.io.FileInputStream;
import java.util.Iterator;

import org.apache.poi.sl.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class A {

    public static void main(String[] args) throws Exception{
        FileInputStream f = new FileInputStream("D:\\LeadSuite.xlsx");
        XSSFWorkbook wbks = new XSSFWorkbook(f);
        Sheet s = (Sheet) wbks.getSheet("TestSteps"); 
        Iterator itr = s.iterator();
        while(itr.hasNext()){
            Row rowitr = (Row)itr.next();
            Iterator cellitr = rowitr.cellIterator();
            while(cellitr.hasNext()){
                Cell cell1= (Cell)cellitr.next();

                switch(cell1.getCellType()){
                case Cell.CELL_TYPE_STRING:
                    System.out.println(cell1.getStringCellValue());
                    break;
                case Cell.CELL_TYPE_NUMERIC:
                    System.out.println(cell1.getNumericCellValue());
                   break;
                case Cell.CELL_TYPE_BOOLEAN:
                    System.out.println(cell1.getBooleanCellValue());
                    break;
                }
            }
        }
    }
}

运行上面的代码后出现异常:

  

线程“ main”中的异常java.lang.ClassCastException:   org.apache.poi.xssf.usermodel.XSSFSheet无法强制转换为   org.apache.poi.sl.usermodel.Sheet

1 个答案:

答案 0 :(得分:2)

您导入了错误的Sheet版本。只需打开

import org.apache.poi.sl.usermodel.Sheet;

进入

import org.apache.poi.ss.usermodel.Sheet;

代表 Excel 工作表的

,您的代码应该可以正常工作。 SheetRowCell不需要强制转换。


如果查看XSSFSheet类定义,您会发现它实现了org.apache.poi.ss.usermodel.Sheet。另一方面,org.apache.poi.sl.usermodel.Sheet界面与 PowerPoint 相关;实际上,根据Javadoc,它是

  

SlidesNotesMasters的公共父接口

因此 .ss. = Excel (XSSF),而 .sl. = PowerPoint (XSLF)。这两个接口名称相同的事实实际上可能会产生误导。