![](/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.