1

行数と列数が指定されていない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 
    } 
4

1 に答える 1

1

次を使用して、処理後に各チャンクを実際にアンロードする必要があります。

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

開発者ドキュメントのセクション 4.3 で説明されているように、そうしないと、各チャンクの後にメモリがクリアされない場合があります。

于 2013-01-10T21:04:39.747 に答える