繁体   English   中英

界面工作簿、工作表和行与 Classess XSSFWorkbook、XSSFSheet 的混淆

[英]Confusion on Interface Workbook, Sheet and Row vs Classess XSSFWorkbook, XSSFSheet

下面是访问 excel 表的所有单元格的简单代码。 我没有使用 XSSFWorkbook、XSSFSheet 等类。我的困惑是,如果接口只包含方法的签名,那么我为什么能够使用 getRow、getCell 等方法呢?

(当我键入 sheet 然后键入句点时列出的那些定义的方法在哪里)

提前致谢。

 FileInputStream inputStream = new FileInputStream("C:\\Eclipse\\WorkSpace\\YPractice\\TestCase.xlsx");
    
    Workbook guru99Workbook = null;     
    
    guru99Workbook = new XSSFWorkbook(inputStream);                                 
    Sheet sheet = guru99Workbook.getSheet("KeywordFramework");
    
    int RowNum = sheet.getLastRowNum() - sheet.getFirstRowNum();
    

    for (int i = 0; i<=RowNum; i++)
    {

        Row row = sheet.getRow(i);
    
        
        for(int j= 0; j<row.getLastCellNum(); j++)
        {
            System.out.println("Data = " +i + " " +row.getCell(j));
            
        }
    }

当您执行以下操作时,您正在使用WorkbookXSSFWorkbook实现:

guru99Workbook = new XSSFWorkbook(inputStream);

稍后您在guru99Workbook上使用getSheet() 鉴于guru99WorkbookXSSFWorkbook ,您将获得XSSFSheet的回报。

这类似于:

List<String> list = new ArrayList<>();

为了回答您的第二个问题,方法列在:

  1. XSSFWorkbookgetSheet(String name)
  2. XSSFSheetgetRow(int rownum)getFirstRowNum()getLastRowNum()
  3. XSSFRow : getLastCellNum() getCell(int cellnum)

getRow(int)方法是在Sheet interface中定义的,这就是为什么您可以从Sheet工作sheet变量中调用它的原因。 同样, getCell(int)Row接口中定义,因此可以通过Row类型的row变量访问。

您对 Java 中接口如何工作的直觉是完全正确的。 您可能误读了SheetRow接口的文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM