1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
<?php
error_reporting(E_ALL);
include 'PHPExcel/Classes/PHPExcel.php'; //Chargement de la librairie
include 'PHPExcel/Classes/PHPExcel/Reader/Excel5.php'; //Chargement de la librairie de lecture
$files = 'myfile.xls' ; //définit le fichier, il contient 9 feuilles
$excel_reader = new PHPExcel_Reader_Excel5() ; //Nouvel objet de lecture
$excel_reader->setReadDataOnly(true) ; //true or false, même résultat
$sheets = array(1 => 'Sommaire', 2 => 'Serveurs', 3 => 'Applis') ; //on référence 3 des 9 feuilles
//La feuille ou se situe la formule qui pose problème est "Serveur", la formule pointant vers la feuille "Sommaire", "Applis" est la pour des tests supplémentaires, et ne sera pas utilisée ici
$excel_reader->setLoadSheetsOnly($sheets) ;
$classeur = $excel_reader->load($files) ; //on charge le fichier
$feuille = $classeur->getSheetByName($sheets[2]); //On choisit la feuille "Serveurs"
$feuille->getDefaultColumnDimension()->setWidth(12); //avec ou sans, cela ne fonctionne pas
//<==========================================================================================>
//<==========================================================================================>
//Dans mon fichier excel, la cellule V3 contient les données "01J / 11Z", et est calculée par cette formule :
//=RECHERCHEV(STXT(U3;1;8);Sommaire!$B$32:$C$54;2;FAUX)
//en Anglais : =VLOOKUP(MID(U3,1,8),Sommaire!$B$32:$C$54,2,FALSE)
//comme on le voit dans la formule, il y a une référence vers "Sommaire"
//<==========================================================================================>
//<==========================================================================================>
echo $feuille->getCell('V3')->getValue(); //avec ça, on obtient :
//=VLOOKUP(MID(U3,1,8),Sommaire!$B$32:$C$54,2,FALSE)
//cela affiche la formule, et ne la calcule pas
echo $feuille->getCell('V3')->getCalculatedValue(); //et avec ça :
//Fatal error: Call to a member function cellExists() on a non-object in <path>\Classes\PHPExcel\Calculation.php on line 3209
//cela plante, au lieu de calculer
?> |
Partager