2013-01-10 73 views
1

我想從excel表格中讀取行數未指定且指定數量的列。我只能用行的指定數量做,任何解決方案將有很大的幫助使用PHP Excel讀取excel文件的代碼點火器

$inputFileType = 'Excel5'; 
    $inputFileName = './sampleData/example2.xls'; 


    /** Define a Read Filter class implementing PHPExcel_Reader_IReadFilter */ 
    class chunkReadFilter implements PHPExcel_Reader_IReadFilter 
    { 
     private $_startRow = 0; 
     private $_endRow = 0; 

     /** Set the list of rows that we want to read */ 
     public function setRows($startRow, $chunkSize) { 
      $this->_startRow = $startRow; 
      $this->_endRow = $startRow + $chunkSize; 
     } 

     public function readCell($column, $row, $worksheetName = '') { 
      // Only read the heading row, and the configured rows 
      if (($row == 1) || 
       ($row >= $this->_startRow && $row < $this->_endRow)) { 
       return true; 
      } 
      return false; 
     } 
    } 


    /** Create a new Reader of the type defined in $inputFileType **/ 
    $objReader = PHPExcel_IOFactory::createReader($inputFileType); 


    /** Define how many rows we want to read for each "chunk" **/ 
    $chunkSize = 2048; 
    /** Create a new Instance of our Read Filter **/ 
    $chunkFilter = new chunkReadFilter(); 

    /** Tell the Reader that we want to use the Read Filter **/ 
    $objReader->setReadFilter($chunkFilter); 
     //I want to loop and get values from the excel sheet startrow< undefined number of rows 
    for ($startRow = 2; $startRow <= 65536; $startRow += $chunkSize) { 

     /** Tell the Read Filter which rows we want this iteration **/ 
     $chunkFilter->setRows($startRow,$chunkSize); 
     /** Load only the rows that match our filter **/ 
     $objPHPExcel = $objReader->load($inputFileName); 
     // Do some processing here 
    } 

回答

1

你真的應該卸載每塊使用處理之後:在節中描述

$objPHPExcel->disconnectWorksheets(); 
unset($objPHPExcel); 

4.3開發人員文檔,否則內存可能不會在每個塊後清除。