web-dev-qa-db-fra.com

Lire uniquement la fiche spécifique

J'essaie de lire une seule feuille d'un document xls et j'ai ceci:

 $objPHPExcel = $objReader->load('daily/' . $fisierInbound);
 $objWorksheet = $objPHPExcel->setActiveSheetIndex(0);
 foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {

            $worksheetTitle     = $worksheet->getTitle();
            $highestRow         = $worksheet->getHighestRow(); // e.g. 10
            $highestColumn      = $worksheet->getHighestColumn(); // e.g 'F'
            $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
            $dataCalls = $worksheet->getCellByColumnAndRow(2, 2)->getValue();
            $dataSubstr = substr($dataCalls, 53);


        } 

Le problème est qu'il lit toutes les feuilles du fichier.

Des idées?

13
ardb

Comme décrit dans le document PHPExcel User Documentation - Reading Spreadsheet Files du dossier /Documentation (section 5.2. Intitulée "Lecture des feuilles de travail uniquement dans un fichier"):

Si vous connaissez le nom de la feuille que vous souhaitez lire.

$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 vous ne connaissez pas à l'avance le nom de la feuille de travail, vous pouvez obtenir la liste de toutes les feuilles de travail avant de charger le fichier.

$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); 
19
Mark Baker

Vous pouvez le faire plus facilement que d’obtenir une liste de noms de feuilles de calcul:

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

Charge n ° 2 (troisième) feuille de calcul.

11
Mycelin

Une façon plus simple pour ceux qui luttent encore avec cela - 

//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...
7
Muhammad Tarique
//load library - Excel
$this->load->library('Excel');
$objPHPExcel = PHPExcel_IOFactory::load('./folder/exceldata.xls');

Les feuilles de calcul individuelles sont accessibles par nom ou par leur position d'index dans le classeur. La position d'index représente l'ordre dans lequel chaque "onglet" de feuille de calcul est affiché lorsque le classeur est ouvert dans MS Excel (ou un autre programme de feuille de calcul approprié).

Pour accéder à une feuille par son nom, utilisez la méthode getSheetByName (), en spécifiant le nom de la feuille de calcul à laquelle vous souhaitez accéder.

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

Pour accéder à une feuille par son index, utilisez la méthode getSheet () . Notez que les feuilles sont indexées à partir de 0.

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

Tout cela peut être réalisé à l'aide de la bibliothèque PHPExcel de @Mark Baker. Merci.

1
VirenPanchal