簡體   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