2017-04-02 28 views
0

確定這樣PHPExcel加載該文件到其objectReaderPHPExcel:一旦你有一個對象,是否有必要getSheet?

// 1. Load file 

    $inputFileType = PHPExcel_IOFactory::identify($this->inputFileName); 
    $this->LogMsg("FileType identified as :".$inputFileType, "O", $opLog); 
    $objReader = PHPExcel_IOFactory::createReader($inputFileType); 
    $this->LogMsg("Reader Created successfully", "O", $opLog); 
    $objReader->setReadDataOnly(true); // if set to read only, it will ignore styling and data validation 
    $objReader->setLoadSheetsOnly($this->sheetname); 
    $objReader= $objReader->setReadFilter($filterSubset); 
    $objPHPExcel = $objReader->load($this->inputFileName); 
    echo ("File Loaded <br>"); 

假設的數據被加載到對象。在此之後,爲了訪問數據,(如果我錯了,糾正我)通常會加載工作表。有或沒有過濾器。這是關於文檔告訴你如何做的唯一事情(並且我已閱讀開發人員和用戶文檔)。

$worksheet = $objPHPExcel->getSheet(0); 

之後,您可以將$工作表轉換爲數組,並且您可以使用它處理數據。事情是,雖然對於大文件,getSheet方法是花費最多時間的方法(在我的情況下,9Mb excel文件需要5秒)。

我想知道是否加載工作表是必要的。一旦文件被加載,$ objPHPExcel包含什麼? var_dumping它並沒有給我太多啓發,因爲它似乎有一堆你無法從外部訪問的受保護屬性。查詢之後它是否就像$ result數據集一樣?我可以使用它而不是加載工作表嗎?除了可以使用load()的方法嗎?你能指點我什麼以外的文件閱讀嗎?

回答

0

Excel文件由多張紙組成,因爲它是一個spreadsheet。實際上,即使只有一張紙,所有的數據仍然保存在紙張中。

因此,要處理工作表中存儲的數據,您必須將其加載到內存中,並使PHPExcel進行分析。在此之前,沒有可用的數據可用。

+0

謝謝!這回答我的問題! –

相關問題