2017-05-27 92 views
0

对不起愚蠢的问题。 以下是我使用Apache POI从电子表格中读取的代码。我很困惑该生产线是关于受保护的构造函数的查询

XSSFWorkbook wb = new XSSFWorkbook(fs); 
XSSFSheet sheet = wb.getSheetAt(0); 

我已经创建了一个XSSFSheet对象,它需要wb.getSheetAt(0),我的查询是我为什么要通过wb.getSheetAt(0)所述片状物体。 当我试图创建一个对象如下

XSSFSheet sheet = new XSSFSheet(wb); 

我得到一个错误,说明

XSSFSheet(org.apache.poi.openxml4j.opc.PackagePart) has protected access in 'org.apache.poi.xssf.usermodel.XSSFSheet' 

我看着XSSFSheet源代码和保护它的构造已被宣布。我觉得可以使用new关键字创建一个对象。我错过了什么?参考

package ReadAndWrite; 

import ReadExcelLibrary.ReadExcelSheet; 
import org.apache.poi.xssf.usermodel.XSSFSheet; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 


/** 
* Created by Shravya on 11/5/17. 
*/ 
public class ReadExcel { 

    public static void main(String[] args) throws Exception { 

     File file = new File("//Development//Selenium//ApachePOI//Apache_wb.xlsx"); 
     FileInputStream fs = new FileInputStream(file); 
     XSSFWorkbook wb = new XSSFWorkbook(fs); 
     //XSSFSheet sheet = new XSSFSheet(wb); 
     XSSFSheet sheet = wb.getSheetAt(0); 
     String value = sheet.getRow(0).getCell(0).getStringCellValue(); 
     System.out.println("The value of cell is " + value); 

     ReadExcelSheet excelSheet = new ReadExcelSheet("//Development//Selenium//ApachePOI//Apache_wb.xlsx"); 
     System.out.println(excelSheet.getData(0,1,1)); 



    } 
} 

回答

2
XSSFSheet sheet = new XSSFSheet(wb); 

的源代码让我们假设你能做到这一点。它会创建一个新的XSSFSheet对象,该对象还不存在。

XSSFSheet sheet = wb.getSheetAt(0); 

这根本不会做同样的事情。这允许获取工作簿中索引为0的现有工作表。所以这些是两个完全不同的东西。基本上,在从车库中取车和建造一辆全新的汽车之间存在同样的区别。

所以,当你说

XSSFSheet sheet = wb.getSheetAt(0); 

我已经创建了一个XSSFSheet对象,它需要wb.getSheetAt(0)

这是不正确。你还没有创建任何东西。您已获得对现有XSSFSheet对象的引用,该工作簿已为您创建。

我的印象是可以使用new关键字创建一个对象。

是的,这是一个构造函数允许做的。但是如果一个构造函数是受保护的,则意味着只有同一个包中的子类或类才允许调用该构造函数。

要在工作簿中创建新工作表,您可以使用this method来要求工作簿为您创建工作表,并为创建的工作表提供参考。就像为了获得一辆新车一样,你通常不会自己创造一辆车,而是要求汽车制造商为你制造一辆。

+1

哦,那些最高1%的人。一个人想到“嗯,这看起来像我可以在手机上回答的东西”,然后你找到了这样一个完美的答案,并且pahh。除了提出答案之外,没有什么可做的了。 – GhostCat

+1

谢谢@GhostCat,我很受宠。 –

+0

最高0.01%。更糟 :-) – GhostCat

相关问题