Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Bureautique
Bureautique Forum d'entraide sur la gestion dynamique de documents de bureautique (Word, Excel, OpenOffice...) avec PHP. Avant de poster -> Cours Excel, FAQ OpenXML, FAQ OpenDocument
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/07/2011, 00h52   #1
Invité de passage
 
Inscription : avril 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 9
Points : 1
Points : 1
Par défaut PHPexcel. j'arrive pas à le faire fonctioner !

J'utilise office 2010
voici mon code

Code :
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
 
<?php
require_once("mysql.php");
 
include '../Classes/PHPExcel.php';
include '../Classes/PHPExcel/Writer/Excel5.php';
 
 
 
$workbook = new PHPExcel;
 
$sheet = $workbook->getActiveSheet();
 
 
 
 
      $sheet->setCellValueByColumnAndRow(1,1,"ayad");
      $sheet->setCellValueByColumnAndRow(2,2,"Marouane");
 
 
 
$writer = new PHPExcel_Writer_Excel5($workbook);
 
 
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition:inline;filename=test.xls');
$writer->save('php://output');
?>
le fichier de sortie est remplie de caractères bizarres,
sachant que le même code sans headers (en utilisant ce qui suit) marche très bien et enregistre un fichier excel .
Code :
1
2
3
4
5
 
<<
$records = './fichier.xlsx';
$writer->save($records);
>>
litox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 11h57   #2
Membre du Club
 
Inscription : avril 2009
Messages : 72
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 72
Points : 56
Points : 56
Salut,

En lisant ton code la première chose qui me choque c'est l'utilisation d'excel5 et de .xls pour l'écriture de fichiers basés sur XML (.xlsx)

Ensuite pour faire la même chose que toi moi voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
include ('PHPExcel.php');
$path = './';
set_include_path(get_include_path().PATH_SEPATATOR.$path);
$reader = new PHPExcel_Reader_Excel5();
$objPHPExcel = $reader->load($fichier); // chemin passé en paramètre ailleurs
header('Cache-Control:no-store,no-cache,must-revalidate,post-check=0,pre-check=0',false);
header('Pragma:no-cache');
header('Content-Type:application/vnd.ms-excel');
header('Content-Disposition:attachement;filename=testExcel.xls');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');
ob_get_clean();
$objWriter->save('php://output');
cfried est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 25/07/2011, 17h24   #3
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Essaye avec ça :

Code :
1
2
3
4
5
6
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  header('Content-Disposition: attachment;filename="testBenchmark.xlsx"');
  header('Cache-Control: max-age=0');
 
  $writer = PHPExcel_IOFactory::createWriter($workbook, 'Excel2007');
  $writer->save('php://output');
philodido est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 17h37   #4
Invité de passage
 
Inscription : avril 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 9
Points : 1
Points : 1
Merci les gars .

j'ai cherché un peu, et j'ai fait plusieurs test le problème est résolu grâce à l'instruction ob_clean(); le fichier en output est lisible maintenant .

litox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 17h43   #5
Invité de passage
 
Inscription : avril 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 9
Points : 1
Points : 1
voici une portion du code que j'utilise :

Code :
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
 
<?php
require_once("mysql.php");
 
require_once '../Classes/PHPExcel.php';
require_once '../Classes/PHPExcel/Writer/Excel5.php';
ob_clean();
 
$workbook = new PHPExcel();							 							 
$sheet = $workbook->getActiveSheet();
$sheet->setTitle("rapport");
 
$sheet->setCellValue('g3',$_POST['titre']);
$sheet->setCellValue('h4',$_POST['desc']);
 
$tab = unserialize(rawurldecode($_POST['serial']));
 
for($i = 0; $i < sizeof($tab) ; $i++) //les noms de mes colonnes 
{
$sheet->setCellValueByColumnAndRow($i+1,8,$tab[$i] );
 
}
 
//........ les éléments du tableau 
 
 
 
$writer = new PHPExcel_Writer_Excel5($workbook); 
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition:inline;filename=Fichier.xls ');
$writer->save('php://output');
 
 
 
?>
litox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 19h10   #6
Invité de passage
 
Inscription : avril 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 9
Points : 1
Points : 1
Une autre question.

comment on peut modifier les attributs (couleur , font ..)d'une cellule en passant par ses coordonnées ($ligne,$colonne)

je trouve que ce genre d'exemples sur internet

Code :
1
2
3
4
5
6
7
8
9
 
$styleA1 = $sheet->getStyle('A1');
$styleFont = $styleA1->getFont()
->applyFromArray(array(
'bold'=>true,
'size'=>12,
'name'=>Arial,
'color'=>array(
'rgb'=>'FF00FF00')));

je veux à la place du A1 , des coordonnées

?????
litox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 19h51   #7
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Je ne comprend pas ta question, 'A1' ce sont des coordonnées : colonne A, ligne 1.
philodido est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 20h25   #8
Invité de passage
 
Inscription : avril 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 9
Points : 1
Points : 1
oui oui tout a fait d'accord mais je voulais à la place du A un entier c'est plus facile dans une boucle ,
moi je cherchais une fonction qui ressemble à celle ci :
$sheet->setCellValueByColumnAndRow(1,9,"valeur");
mais pour les styles


je viens de trouver une solution avec les codes ASCII.

Code :
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
 
for($i; $i< $tailletab;$i++)
{
 
$col = ch(66 + $i);
 
$styleA1 = $sheet->getStyle($col.'4')->applyFromArray(
         array(
             'font'    => array(
                 'name'      => 'Arial',
                 'bold'      => true,
                 'italic'    => false,              
                 'strike'    => false,
                 'color'     => array(
                     'rgb' => '808080'
                 )
             ),
             'borders' => array(
                 'bottom'     => array(
                     'style' => PHPExcel_Style_Border::BORDER_THICK,
                     'color' => array(
                         'rgb' => '808080'
                     )
 
                 ),
                 'top'     => array(
                     'style' => PHPExcel_Style_Border::BORDER_THICK,
                     'color' => array(
                         'rgb' => '808080'
                     )
                 )
             )
         )
 );
 
 
 
}
litox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 21h04   #9
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
Citation:
Envoyé par litox Voir le message
je voulais à la place du A un entier c'est plus facile dans une boucle
Alors il fallait le dire sinon comment veux-tu qu'on t'aide. Je ne pensais pas qu'on puisse être bloqué par si peu car un banal tableau indexé contenant les lettres des colonnes suffit.
philodido est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 21h14   #10
Invité de passage
 
Inscription : avril 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 9
Points : 1
Points : 1
Grand Merci pour vos commentaires cher "philodido"
litox est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h47.


 
 
 
 
Partenaires

Hébergement Web