merci super tuto très utile mais il manque une parenthèse dans le code
4.2.1.3. Les autres styles de PHPExcel_Style_Alignment
il fodrait la corrigé
merci super tuto très utile mais il manque une parenthèse dans le code
4.2.1.3. Les autres styles de PHPExcel_Style_Alignment
il fodrait la corrigé
Merci pour ce superbe tuto, j'ai pu y trouver des informations utile pour la génération de mes petits classeurs.
Néanmoins je rencontre quelque soucis avec mon installation (PHP 5.3.13 )
- Problème avec le format Excel2007 ( zip not close )
Pour ce problème, j'ai pu trouver une réponse aujourd'hui sur les forums officiels, je me permets de citer directement la réponse de mrbladergroen http://phpexcel.codeplex.com/discussions/402403
As of PHP 5.3.0, php_zip is built-in. The extension is not working anymore. Directing your ZipArchive to the PHPExcel built-in zip archive (add 'PHPExcel_Settings::setZipClass(PHPExcel_Settings:CLZIP);' before the call to the save function) will solve the problem with writing excel files in Excel2007 format. The only problem that exists is the fact that some unreadable content will be included causing excel to give a warning on opening the file, asking to repair the file. Just say 'yes' and you will have a readable excel file. Something to correct in future versions?- Par contre, je rencontre une autre erreur.
Dans le système que j'ai mis en place, j'utilise le phar pour des facilités de déploiement. Et je rencontre une erreur pour laquelle je n'ai pas de solution :
Cela correspond au code suivant,Warning: Invalid argument supplied for foreach() in phar:///data/vhosts/b/blogmusik.net/_payment-preprod/require/PHPExcel.phar/PHPExcel/Calculation.php on line 1685
et je ne rencontre cela que sur un environement que je ne maitrise pas complètement ( pas de souci en local ), je creuse donc plutôt un problème au niveau système mais rien ne me saute aux yeux. Si quelqu'un a des informations ou une piste? peut-être lié au phar?
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 private function __construct() { $localeFileDirectory = PHPEXCEL_ROOT.'PHPExcel/locale/'; foreach (glob($localeFileDirectory.'/*',GLOB_ONLYDIR) as $filename) { $filename = substr($filename,strlen($localeFileDirectory)+1); if ($filename != 'en') { self::$_validLocaleLanguages[] = $filename; } } $setPrecision = (PHP_INT_SIZE == 4) ? 12 : 16; $this->_savedPrecision = ini_get('precision'); if ($this->_savedPrecision < $setPrecision) { ini_set('precision',$setPrecision); } }
Merci d'avance
Puisque cela fonctionne en local, as-tu essayé hors phar en local ?
Ca sera mon étape de lundi, mais le déploiement vers la plateforme de production des 280 fichiers n'est pas choses aisées ( le système est un peu bancal quand il s'agit d'une grosse volumétrie de fichiers ).
C'est d'ailleurs pour cela que je suis parti sur le phar
merci pour ce tuto mais il lui faux une nouvel mise a jour beaucoup de truc en changer commet les PDF
bonjour,
Ton cours m'a grandement avancé dans mon projet, mais la j'ai souci que je ne parviens pas à résoudre.
Je ne peux pas écrire dans un fichier déjà existant, parce que je n'est pas les droits suffisant pour utiliser le dossier temp de mon serveur ftp.
Je me suis donc tourné vers la fusion d'une maquette et d'une feuille contenant les données.
j'ai donc le code suivant
mais dans le gestionnaire d'erreur j'ai l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php include('connect.php'); include('Classes/PHPExcel/IOFactory.php'); include ('Classes/PHPExcel.php'); include ('Classes/PHPExcel/Writer/Excel5.php'); $workbook = new PHPExcel; $objet1 = new PHPExcel_Reader_Excel5(); $excel1 = $objet1->load('docvierge.xls'); $objet2 = new PHPExcel_Reader_Excel5(); $excel2 = $objet2->load('donnees.xls'); $writer = new PHPExcel(); //insertion des sheet du premier fichier for ($i=0;$i<$excel1->getSheetCount();$i++){ $writer->addSheet($excel1->getSheet($i)); } //insertion des sheet du second fichier for ($i=0;$i<$excel2->getSheetCount();$i++){ $writer->addSheet($excel2->getSheet($i)); } $save = new PHPExcel_Writer_Excel5($writer); $save->save('reporting.xls');
je ne trouve pas ou est censé ce trouvé la fonction getid, j'ai cherhcé un long moment avant de posté ce messageSource file: In file /data/www/base-formations-pprod.formation/html/web/Classes/PHPExcel/Calculation.php on line 1764
PHP error: Error of type E_ERROR Call to undefined method PHPExcel::getID()
merci de ton aide
cordialement
Est-tu sur que tu as la dernière version de PHPExcel, n'as tu point fait de mélange entre deux versions ?
ah, ça devais être ça maintenant j'ai le problème du dossier tmp
donc je suis de nouveau bloqué...
Peut être y a t-il moyen de bypasser cette restriction de droit en utilisant un autre dossier ?Source file: In file /data/www/base-formations-pprod.formation/html/web/Classes/PHPExcel/Shared/File.php on line 175
PHP error: Error of type E_WARNING
realpath() [<a href='function.realpath'>function.realpath</a>]: open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/data/www/base-formations-pprod.formation/:/usr/local/php/lib:/exec/adm/lib)
Tu ne peu écrire dans /tmp
Crée un répertoire tmp à la racine de ton site, donne lui les droits 777 et au début de ton fichier fait ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ini_set('open_basedir', '/data/www/base-formations-pprod.formation/tmp/');
Bonjour,
je viens de découvrir votre appli et c'est top.
J'aurais néanmoins deux questions :
Il y a t il une solution à ce type de messages :
Fatal error: Allowed memory size of 94371840 bytes exhausted (tried to allocate 69 bytes) in /homepages/11/d451722228/htdocs/include/PHPExcel/Worksheet.php on line 1136
Je dois souvent générer des fichiers qui font plus de 7Mo.
Deuxième question, j'ai vu passer un post concernant les fonctions utf8_decode() et utf8_encode(), car j'ai également eu un souci d'ouverture de fichier soit disant corrompu. Comment elles s'utilisent ces fonctions, c'est dans l'instanciation des cellules?
Merci
Cela me fait penser qu'i faut que je modifie ce tuto, vu les énormes changement effectués au sein de cette lib.
Pour ton problème de mémoire c'est définis dans ton php.ini
sinon le plus simple mat ceci en débute de fichier
Pour l'utf-8, oui cela se fait dans le gestion de ta cellule.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp; $cacheSettings = array( 'memoryCacheSize' => '32MB'); PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
MERci encore de ta réponse, mais cela ne veut toujours pas....
Fatal error: Allowed memory size of 94371840 bytes exhausted (tried to allocate 344 bytes) in /homepages/11/d451722228/htdocs/include/PHPExcel/CachedObjectStorage/PHPTemp.php on line 65
Tu peux diminuer la quantité de mémoire nécessaire en ne chargeant que les feuilles dont tu as besoin :
Mais dans ton cas tu peux aussi augmenter la mémoire maximum de PHP dans ton php.ini : tu n'es pas a des valeurs très hautes encore.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $objReader = PHPExcel_IOFactory::createReader('Excel5'); $objReader->setLoadSheetsOnly(array('Feuil1','Feuil2')); $objPHPExcel = $objReader->load('tonfichier.xls');
Voilà le code de ma page.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 <?php session_start(); set_time_limit(0); //détection du fichier de connexion approprié if(isset($_SESSION['config']) && $_SESSION['config'] != '') { include('include/'.$_SESSION['config']); } else { include('include/config_test.inc'); } include('include/param.php'); include('include/fonctions.php'); //include des fichiers PHPExcel include('include/PHPExcel.php'); include('include/PHPExcel/Writer/Excel2007.php'); //Test proposé pour la mémoire $cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp; $cacheSettings = array( 'memoryCacheSize' => '64MB'); PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings); $workbook = new PHPExcel; $sheet = $workbook->getActiveSheet(); //Je parcours un SELECT reçu en POST afin de déterminer les rubriques du SELECT de ma requête $i=0; if(isset($_POST['rub_select']) && !empty($_POST['rub_select'])) { $Col1_Array = $_POST['rub_select']; foreach($Col1_Array as $selectValue) { //affichage des valeurs sélectionnées if($sel == '') { $sel = 'MASTER.'.$selectValue; } else { $sel .= ','.'MASTER.'.$selectValue; } //$worksheet->write(0, $i, $selectValue, $header); //ecriture des entêtes de colonnes $sheet->setCellValueByColumnAndRow(1, $i, $selectValue); $i++; } } $select_ot = 'SELECT '.$sel.' '; //FROM $from_ot = 'FROM MASTER LEFT OUTER JOIN CLIENTS ON MASTER.id_client = CLIENTS.id_client LEFT OUTER JOIN IFTSTA ON MASTER.iftsta = IFTSTA.CODE LEFT OUTER JOIN STATUS ON IFTSTA.code_status = STATUS.code LEFT OUTER JOIN ISSUES ON IFTSTA.code_issue = ISSUES.code_issue '; //....... CONSTRUCTION DE MA REQUETE .........// //....... enlevée car inutile pour l'explication .....// //REQUETE $requete_ot = $select_ot.$from_ot.$where_ot.$order_ot.$limit_ot; if(!($result_ot = mysql_query($requete_ot))) { echo $requete_ot.'"<br />"'.mysql_error(); } else { $i=1; while($row_ot = mysql_fetch_array($result_ot)) { $i++; $j=1; if(isset($_POST['rub_select']) && !empty($_POST['rub_select'])) { $Col1_Array = $_POST['rub_select']; foreach($Col1_Array as $selectValue) { //$worksheet->write($i, $j, $row_ot[$selectValue]); //écriture des lignes $sheet->setCellValueByColumnAndRow($i, $j, $selectValue); $j++; } } } } $writer = new PHPExcel_Writer_Excel2007($workbook); $records = './fichier.xlsx'; $writer->save($records); ?>
Le principe est de construire une requête avec ou non un filtre que l'exploitant aura saisi (rempli des critères).
Grâce à cette requête, sélectionner les enregistrements et générer mon fichier (csv, xls, pdf.....m'est égal).
Je fais une sélection qui est censée me fournir plus de 8400 enregistrements, si je m'arrête à environ 7200 cela se passe bien, le fichier excel s'ouvre. Quand je vais jusqu'au bout, pour avoir mes 8400 enregistrement j'ai ce problème de taille....
Merci
Toujours la même réponse : il faut augmenter la mémoire maximale dans ton php.ini
Coucou messieurs.
Je reviens vers cette remarque.
J'ai tenté cela de deux manières :
dans mon fichier.....cela n'a pas changé mon message d'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part ini_set('memory_limit','64M');
et tenté un fichier htaccess avec :
Pas plus de résultat......
Code : Sélectionner tout - Visualiser dans une fenêtre à part memory_limit 64M
là je suis un peu désorienté.
Bonjour à toutes et à tous,
Voila je développe actuellement un excel grâce à la merveilleuse librairie PHPExcel (c'est une tuerie)
Je rencontre néanmoins un problème lorsque j'ouvre mon fichier généré , les formules apparaissent en #NOM?
Il faut que je clique sur la cellule que je valide la formule et que je l'étire sur la colonne pour que celle-ci soit faite...
a titre indicatif, j'ai deux feuille,
la première est un ensemble de tableau regroupant des données,
la seconde est un tableau dont une partie des informations est calculé avec une formule composée d'un =si et d'une recherche dans la première feuille.
j'utilise plusieurs fonction pour découper mon code de façon à ne pas mit perdre,
j'ai une fonction générale qui en fonction du type d'excel va faire un traitement différent,
dans cette fonction je créer l'objet $classeur
je commence avec une fonction qui créer a première feuille et ses entêtes,
dans un deuxième temps une autre va chercher et traiter mes données
et pour finir je rempli ma feuille.
PS: je ne peux pas coller mon code car celui-ci est destiné à une entreprise (je suis en stage)
Je vous remercie par avance
Partager