Comment lire automatiquement dans des valeurs calculées avec PHPExcel?

J'ai le texte suivant Excel fichier:

Comment lire automatiquement dans des valeurs calculées avec PHPExcel?

Je l'ai lu dans par boucle sur chaque cellule et l'obtention de la valeur avec getCell(...)->getValue():

$highestColumnAsLetters = $this->objPHPExcel->setActiveSheetIndex(0)->getHighestColumn(); //e.g. 'AK'
$highestRowNumber = $this->objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
$highestColumnAsLetters++;
for ($row = 1; $row < $highestRowNumber + 1; $row++) {
    $dataset = array();
    for ($columnAsLetters = 'A'; $columnAsLetters != $highestColumnAsLetters; $columnAsLetters++) {
        $dataset[] = $this->objPHPExcel->setActiveSheetIndex(0)->getCell($columnAsLetters.$row)->getValue();
        if ($row == 1)
        {
        $this->column_names[] = $columnAsLetters;
        }
    }
    $this->datasets[] = $dataset;
}

Cependant, si l'on lit dans les données de l'amende, il lit dans les calculs littéralement:

Comment lire automatiquement dans des valeurs calculées avec PHPExcel?

Je comprends de discussions comme celui-ci que je peux utiliser getCalculatedValue() pour les cellules calculées.

Le problème est que dans les feuilles de calcul Excel, je suis à l'importation, je ne sais pas à l'avance lequel les cellules sont calculés et qui ne le sont pas.

Est-il un moyen pour moi de lire dans la valeur d'une cellule dans une manière qui obtient automatiquement la valeur si elle a une valeur simple et obtient le résultat du calcul si c'est un calcul?

Réponse:

Il s'avère que getCalculatedValue() fonctionne pour toutes les cellules, je me demande pourquoi ce n'est pas la valeur par défaut pour getValue() car je pense que l'on veut généralement la valeur de l'calculs plutôt que de les équations elles-mêmes, en tout cas cela fonctionne:

...->getCell($columnAsLetters.$row)->getCalculatedValue();

Comment lire automatiquement dans des valeurs calculées avec PHPExcel?

  • Un problème lors de l'utilisation de getCalculatedValue() peut être la conversion automatique des valeurs numériques avec des zéros. E. g. '0600" devient calculé '600', alors vous avez besoin de la chaîne "0600" sur PHP/base de données secondaires. Donc je suis en utilisant getValue() à la première à aller chercher le contenu d'une cellule, puis à identifier des équations par le biais de l'un des principaux '=' pour récupérer leur valeur calculée par getCalculatedValue().
  • PHPExcel a été superseeded par PhpSpreadsheet
  • Je suis en utilisant PHPExcel 1.7.8 et ressemble à ce qu'il obtient la valeur de la formule automatiquement sans rien faire de spécial, je l'ai testé aujourd'hui sur ma machine de développement. De même, un client s'est présenté que pour lui, il ne fonctionne pas donc je suis en attente de voir ce qui est le cas précis qui ne fonctionne pas. Type de formule? Type de fichier Excel? Nous allons voir, pour l'instant, il étrangement fonctionne, tout simplement. Mise à jour: je suis en utilisant $sheet->rangeToArray méthode, c'est pourquoi!