![](/img/trans.png)
[英]XSSFWorkbook cloneSheet corrupts workbook if sheet contains a table
[英]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));
}
}
當您執行以下操作時,您正在使用Workbook
的XSSFWorkbook
實現:
guru99Workbook = new XSSFWorkbook(inputStream);
稍后您在guru99Workbook
上使用getSheet()
。 鑒於guru99Workbook
是XSSFWorkbook
,您將獲得XSSFSheet
的回報。
這類似於:
List<String> list = new ArrayList<>();
為了回答您的第二個問題,方法列在:
XSSFWorkbook
: getSheet(String name)
XSSFSheet
: getRow(int rownum)
、 getFirstRowNum()
、 getLastRowNum()
XSSFRow
: getLastCellNum()
getCell(int cellnum)
getRow(int)
方法是在Sheet
interface中定義的,這就是為什么您可以從Sheet
工作sheet
變量中調用它的原因。 同樣, getCell(int)
在Row
接口中定義,因此可以通過Row
類型的row
變量訪問。
您對 Java 中接口如何工作的直覺是完全正確的。 您可能誤讀了Sheet
和Row
接口的文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.