Leer solo hoja específica

Estoy intentando leer solo una hoja de un documento xls y tengo esto:

$objPHPExcel = $objReader->load('daily/' . $fisierInbound); $objWorksheet = $objPHPExcel->setActiveSheetIndex(0); foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { $worksheetTitle = $worksheet->getTitle(); $highestRow = $worksheet->getHighestRow(); // eg 10 $highestColumn = $worksheet->getHighestColumn(); // eg 'F' $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); $dataCalls = $worksheet->getCellByColumnAndRow(2, 2)->getValue(); $dataSubstr = substr($dataCalls, 53); } 

El problema es que lee todas las hojas del archivo.

¿Algunas ideas?

Como se describe en la PHPExcel User Documentation - Reading Spreadsheet Files documentos de PHPExcel User Documentation - Reading Spreadsheet Files en la carpeta /Documentation (sección 5.2, titulada ” PHPExcel User Documentation - Reading Spreadsheet Files solo de nombre con nombre de un archivo”):

Si conoce el nombre de la hoja que desea leer.

 $inputFileType = 'Excel5'; $inputFileName = './sampleData/example1.xls'; $sheetname = 'Data Sheet #2'; /** Create a new Reader of the type defined in $inputFileType **/ $objReader = PHPExcel_IOFactory::createReader($inputFileType); /** Advise the Reader of which WorkSheets we want to load **/ $objReader->setLoadSheetsOnly($sheetname); /** Load $inputFileName to a PHPExcel Object **/ $objPHPExcel = $objReader->load($inputFileName); 

Si no conoce el nombre de la hoja de trabajo por adelantado, puede obtener una lista de todas las hojas de trabajo antes de cargar el archivo.

 $inputFileType = 'Excel5'; $inputFileName = './sampleData/example1.xls'; /** Create a new Reader of the type defined in $inputFileType **/ $objReader = PHPExcel_IOFactory::createReader($inputFileType); /** Read the list of worksheet names and select the one that we want to load **/ $worksheetList = $objReader->listWorksheetNames($inputFileName) $sheetname = $worksheetList[0]; /** Advise the Reader of which WorkSheets we want to load **/ $objReader->setLoadSheetsOnly($sheetname); /** Load $inputFileName to a PHPExcel Object **/ $objPHPExcel = $objReader->load($inputFileName); 

Puede hacerlo más fácilmente que obtener una lista de nombres de hojas de trabajo:

 $objPHPExcel->setActiveSheetIndex(2); $worksheet = $objPHPExcel->getActiveSheet(); 

Carga la hoja de trabajo # 2 (tercera).

Una forma más fácil para aquellos que todavía están luchando con esto –

 //include library include('path/to/PHPExcel/IOFactory.php'); //load the file $objPHPExcel = PHPExcel_IOFactory::load('your/path/for/excel/file'); //get the worksheet of your choice by its name $worksheet = $objPHPExcel->getSheetByName('Name of sheet'); #and your work goes here... 
 //load library - EXCEL $this->load->library('excel'); $objPHPExcel = PHPExcel_IOFactory::load('./folder/exceldata.xls'); 

Se puede acceder a las hojas de trabajo individuales por nombre, o por su posición de índice en el libro de trabajo. La posición del índice representa el orden en que se muestra cada “hoja” de la hoja de trabajo cuando el libro se abre en MS Excel (u otro progtwig de hoja de cálculo apropiado).

Para acceder a una hoja por nombre , use el método getSheetByName () , especificando el nombre de la hoja de cálculo a la que desea acceder.

 //Retrieve the worksheet called 'Worksheet 1' $objPHPExcel->getSheetByName('Worksheet 1'); 

Para acceder a una hoja por su índice , use el método getSheet () . Tenga en cuenta que las hojas se indexan desde 0.

 //Retrieve the **1st 'tab' worksheet** eg called 'Sheet 1' $worksheet = $objPHPExcel->getSheet(0); //Retrieve the **2nd 'tab' worksheet** eg called 'Sheet 2' $worksheet = $objPHPExcel->getSheet(1); 

Todo esto se puede lograr con la ayuda de la biblioteca PHPExcel de @Mark Baker. Gracias.