2011-08-12 5 views
2

J'essaie de comprendre comment obtenir des données à partir des cellules dans PHPExcel mais je ne sais pas. Je lis tous les documents et j'ai fait ceci:PHPExcel comment utiliser les données du lecteur

<?php 
include('PHPExcel/Classes/PHPExcel/Reader/Excel2007.php'); 
class MyReadFilter implements PHPExcel_Reader_IReadFilter 
{ 
    public function readCell($column, $row, $worksheetName = '') { 
     // Read title row and rows 20 - 30 
     if ($row == 1 || ($row >= 20 && $row <= 30)) { 
      return true; 
     } 

     return false; 
    } 
} 
$objReader = new PHPExcel_Reader_Excel2007(); 
$objReader->setReadFilter(new MyReadFilter()); 
$objReader->setReadDataOnly(true); 
$objPHPExcel = $objReader->load("sample_mymails222.xlsx"); 
print_r($objPHPExcel); 
?> 

print_r montrent tableau très grand. Je pense qu'il y a quelques fonctions pour obtenir des données de la cellule dans $ objPHPExcel.

Comment le faire?

Merci!

Répondre

2

S'il vous plaît lire le chapitre de la documentation 4.5 (inclus dans le package de téléchargement PHPExcel)

+0

oh, merci beaucoup! – Mirgorod

25

Pour toute autre personne qui veut une réponse plus utile, suivant le code dans l'exemple ci-dessus, voici un extrait rapide qui analysera l'actif feuille de calcul dans un tableau multidimensionnel (cet exemple ignore le ReadFilter créé par l'OP).

$data = array(); 
$worksheet = $objPHPExcel->getActiveSheet(); 
foreach ($worksheet->getRowIterator() as $row) { 
    $cellIterator = $row->getCellIterator(); 
    $cellIterator->setIterateOnlyExistingCells(false); 
    foreach ($cellIterator as $cell) { 
    $data[$cell->getRow()][$cell->getColumn()] = $cell->getValue(); 
    } 
} 
var_dump($data); 

BTW La raison pour laquelle je dis « plus utile réponse » est que j'avais aussi du mal à comprendre la documentation PHPExcel (qui se compose de 6 documents distincts et sans réelle référence comme API) la première fois.

L'OP dit-il « lire tous les documents », mais je devine que, comme moi, il a lu dans le fichier appelé PHPExcel Documentation utilisateur - Lecture tableur Files.doc qui explique comment lire dans une feuille de calcul, mais ne couvre pas l'utilisation du contenu.

Pour le savoir, vous devez creuser dans PHPExcel développeur documentation.doc et descendre à la partie 4 (où est l'exemple ci-dessus).

Eh oui, ma faute pour ne pas être exhaustive, mais il est clair que c'est un problème récurrent. :-)

+0

merci pour l'exemple de code de travail! –

+0

Il y a une référence API complète dans le répertoire/Documentation/répertoire API dans les distributions de production ... il est étonnant de voir combien les gens sont complètement inconscients de son existence, malgré les noms des répertoires –

+0

@MarkBaker PHPExcel est excellent! Je ne peux pas me plaindre de quoi que ce soit! Je venais de donner un Sugestion (et je sais que vous avez vraiment pas besoin de le faire), mais je pense que les gens ne pensent pas qu'il est facile de trouver la documentation PHPExcel à cause de la façon dont il est shown.In être mon avis, Codeigniter de Guide de l'utilisateur est l'une des meilleures références d'un grand, propre et facile à trouver tout sur codeigniter..The façon dont vous pouvez rechercher des informations là-bas, les exemples, etc.In PHPExcel, il est un peu plus difficile de lil de faire une recherche, mais rien de vraiment difficile. Presque toutes mes questions ici, j'ai trouvé la réponse faisant une meilleure recherche – Periback

3

pour la lecture de fichier Excel, vous pouvez utiliser ce

require_once('PHPExcel.php'); 
 
$input_file_type = PHPExcel_IOFactory::identify($excel_file); 
 
$obj_reader = PHPExcel_IOFactory::createReader($input_file_type); 
 
$obj_reader->setReadDataOnly(true); 
 
     
 
$objPHPExcel = $obj_reader->load($excel_file); 
 
$objWorksheet = $objPHPExcel->setActiveSheetIndex(0); 
 
$highest_row = $objWorksheet->getHighestRow(); 
 
$highest_col = $objWorksheet->getHighestColumn(); 
 
//$highest_col_index = PHPExcel_Cell::columnIndexFromString($highest_col); 
 
     
 
// start $row from 2, if you want to skip header 
 
for ($counter = 2; $counter <= $highest_row; $counter++) 
 
{ 
 
    $row = $objWorksheet->rangeToArray('A'.$counter.':'.$highest_col.$counter); 
 
    $row = reset($row);    
 
}

+0

Je sais que ça fait longtemps que tu l'as posté. Mais je ne peux pas trouver de l'aide. Comment imprimer les données dans $ row? Je reçois toujours 'Undefined Offset'. S'il vous plaît aidez-moi = – PlayHardGoPro

+1

s'il vous plaît envoyez votre code –

+0

Vraiment merci d'avoir répondu mec. Je viens de résoudre le problème, trouvé un document.doc avec quelques explications ... Merci monsieur !! <3 – PlayHardGoPro

Questions connexes