2015-11-05 2 views
0

Je lis un fichier Excel dans lequel PHPExcel codeplex considère parfois une cellule vide comme une cellule de valeur. Par exemple:Lecture de cellules vides en tant que cellules de données

Si mon Excel a 128 colonnes, le maximum est DV parfois, il dépendra des exigences d'Excel et des utilisateurs. Le maximum est de 126 colonnes. Le minimum est de 8 colonnes. Et aussi la ligne maximale est 250.

---------------------- 
A | B | ..... |DU |DV| 
---------------------- 

J'ai utilisé le code ci-dessous pour charger Excel:

set_include_path(get_include_path() . PATH_SEPARATOR . 'Classes/'); 
    include 'PHPExcel/IOFactory.php';  

    $inputFileName = $target_file; 
    try { 
      $inputFileType = PHPExcel_IOFactory::identify($inputFileName); 
      $objReader = PHPExcel_IOFactory::createReader($inputFileType); 
      $objPHPExcel = $objReader->load($inputFileName); 
    } catch(Exception $e) { 
     die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage()); 
    } 

Maintenant, le problème est PHPExcel est montrant la mauvaise colonne maximale et des lignes, la colonne maximale est de 126 (DV) et la ligne maximale est 245.

Mais quand je le code suivant me fais des valeurs erronées:

$lastColumn = $objPHPExcel->setActiveSheetIndex(0)->getHighestColumn(); 
$lastRow = $objPHPExcel->setActiveSheetIndex(0)->getHighestRow(); 

au lieu de 126 Je reçois 1800+ (AMK) en tant que colonne maximale et la ligne maximale il afficher comme 65536.

Comment résoudre ce problème?

Même en effaçant et en créant un nouvel Excel cela arrive parfois.

Comment définir la colonne et les lignes maximales avant de lire (charger) Excel ou comment éviter les cellules vides?

Répondre

1

Les lignes et les colonnes sont comptées par getHighestColumn() et getHighestRow() si elles contiennent quelque chose (y compris des informations de style ou d'impression) plutôt que d'avoir simplement un contenu. Ces valeurs sont également calculées lors du chargement de la feuille de calcul. Elles peuvent donc ne pas être exactes si vous ajoutez par la suite de nouvelles lignes ou colonnes à la feuille de calcul. Au lieu de cela, utilisez les méthodes getHighestDataColumn() et getHighestDataRow() pour renvoyer la ligne et la colonne les plus élevées qui contiennent réellement des valeurs de données dans les cellules. Bien que moins efficaces, ils calculent en fait la référence de cellule la plus élevée lorsqu'elle est appelée, ce qui est plus lent, mais toujours précis.

Notez également qu'une cellule qui peut vous sembler vide peut toujours contenir une chaîne vide ou une chaîne vide. C'est toujours une valeur de données.

+0

Merci beaucoup @Mark maintenant je peux obtenir des données MaximumRows seulement contiennent des cellules, mais la colonne montre toujours une erreur erronée. En ce moment j'ai fait la colonne maximum DW en statique. S'il vous plaît est de toute façon pour obtenir la colonne maximale –

+0

Comme je l'ai dit, 'Notez aussi qu'une cellule qui peut vous sembler vide peut toujours contenir une chaîne vide ou vide. Il s'agit toujours d'une valeur de données. »Vous devrez peut-être écrire votre propre logique pour identifier les cellules qui contiennent des données visibles –