2017-05-27 53 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

相關問題