Lecteur PHPExcel - aide requise

Je m en utilisant PHPExcel pour lire des données à partir d'une feuille Excel et de les stocker dans une table mysql, jusqu'à maintenant, je m en mesure de télécharger .xls ainsi que .fichier xlsx et après téléchargement de l'xls je suis en dessous du tableau de la structure de données

name    start_date              end_date               city
one 11/25/2011 3:30:00 PM   11/29/2011 4:40:00 AM   Jaipur
two 10/22/2011 5:30:00 PM   10/25/2011 6:30:00 AM   Kota
three  3/10/2011 2:30:00 PM 3/11/2011 12:30:00 AM   Bikaner
                                                    chandigarh

maintenant, j'ai des problèmes, merci de me suggérer la méthode optimisée

  1. comment pouvons-nous obtenir le nom de la feuille ( bcoz dans un excel, il y a 7 feuilles )
  2. pour l'instant ce que je fais pour stocker ces
    les données en db, ci-dessous, l'extrait de code

    $inputFileName = "test.xls";  
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName);  
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);  
    $objReader->setReadDataOnly(true);  
    /**  Load $inputFileName to a PHPExcel Object  **/  
    $objPHPExcel = $objReader->load($inputFileName);  
    $total_sheets=$objPHPExcel->getSheetCount(); //here 4  
    $allSheetName=$objPHPExcel->getSheetNames(); //array ([0]=>'student',[1]=>'teacher',[2]=>'school',[3]=>'college')  
    $objWorksheet = $objPHPExcel->setActiveSheetIndex(0); //first sheet  
    $highestRow = $objWorksheet->getHighestRow(); //here 5  
    $highestColumn = $objWorksheet->getHighestColumn(); //here 'E'  
    $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);  //here 5  
    for ($row = 1; $row <= $highestRow; ++$row) {  
        for ($col = 0; $col <= $highestColumnIndex; ++$col) {  
        $value=$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();  
            if(is_array($arr_data) ) { $arr_data[$row-1][$col]=$value; }  
        }  
    }
    print_r($arr_data);

et cela renvoie

Array
(
[0] => Array
    (
        [0] => name
        [1] => start_date
        [2] => end_date
        [3] => city
        [4] =>         
    )

[1] => Array
    (
        [0] => one  
        [1] => 40568.645833333
        [2] => 40570.5
        [3] => Jaipur
        [4] => 
    )
[2] => Array
    (
        [0] => two 
        [1] => 40568.645833333
        [2] => 40570.5
        [3] => Kota
        [4] => 
    )
[3] => Array
    (
        [0] => three
        [1] => 40568.645833333
        [2] => 40570.5
        [3] => Bikaner
        [4] => 
     )
  [4] => Array
    (
        [0] => 
        [1] => 
        [2] => 
        [3] => Chandigarh
        [4] => 
    )

)

j'ai besoin de

  • en-tête de chaque feuille excel (c'est à dire de la première ligne) à devenir la clé du tableau($arr_data) et
  • de repos deviennent la valeur de tableau.
  • temps a changé en une certaine valeur entière, qui doit être la même que dans la feuille excel
  • champ vide ( j'.e.vide-tête de colonne ) de la matrice de toutes les lignes doivent être tronqués (ici [4] )
  • si le premier champ d'une feuille excel (ou combiné condition sur certains
    les champs) n'est pas remplie, alors que la ligne ne doit pas être ajouté dans le tableau

c'est à dire souhaité tableau devrait ressembler à

Array  
    (  
    [0] => Array  
    (  
      [name] => one  
      [start_date] => 11/25/2011 3:30:00 PM  
      [end_date] => 11/29/2011 4:40:00 AM  
      [city] => Jaipur  
    )  
    [1] => Array  
    (  
      [name] => two  
      [start_date] => 10/22/2011 5:30:00 PM  
      [end_date] => 10/25/2011 6:30:00 AM  
      [city] => Kota  
    )  
    [2] => Array  
    (  
      [name] => three  
      [start_date] => 3/10/2011 2:30:00 PM  
      [end_date] => 3/11/2011 12:30:00 AM  
      [city] => Bikaner  
    )  
)

et après que je stocker des données dans ma db à l'aide de mysql action sur le tableau désiré.

  • est-il une autre méthode courte pour stocker les données ci-dessus en db

Remarque: Veuillez ne pas voir le manuel( il est vraiment vraiment très mauvais )... juste me dire les méthodes de nom..

mise à jour

@Marc Merci pour votre solution, cela m'aide beaucoup, mais encore certains problèmes sont là

  • comment gérer vide/cellule vide dans la feuille excel..bcoz lorsque toutes les cellules sont vides, puis il affiche un avis

Notice: Undefined index: C dans C:\xampp\htdocs\xls_reader\Tests\excel2007.php
sur la ligne 60
Notice: Undefined index: D C:\xampp\htdocs\xls_reader\Tests\excel2007.php
sur la ligne 60

alors que la ligne 60 est

foreach($headingsArray as $columnKey => $columnHeading) { 
    $namedDataArray[$r][$columnHeading] = $dataRow[$row]$columnKey];
}
  • la façon de définir les conditions avant l'extraction de la matrice de données complète c'est à dire si je veux que, si la première et de la deuxième colonne sont vide/vide dans toute la ligne alors que la ligne ne doit pas être ajoutée dans notre tableau désiré

grâce

source d'informationauteur diEcho