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 03/04/2007, 11h47   #1
Invité de passage
 
Inscription : avril 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 2
Points : 0
Points : 0
Par défaut duplication d'objet

Bonjour,

Je rencontre un problème avec l'usage de la bibliothèque WriteExcel en php5
J'ai de nombreux type de format à définir pour mettre en page un document excel à générer. Pour gagner du temps, j'ai voulu définir un format de base et le "cloner". J'affecte alors des valeurs différentes au propriété de mes formats finaux. Le problème que je rencontre est lorsque j'applique mon format modifié à une cellule, ce sont les valeurs des propriétés de mon objet initial qui sont utilisées. Exemple :


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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
	require_once "class.writeexcel_workbook.inc.php";
	require_once "class.writeexcel_worksheet.inc.php";
	$fname = tempnam("/tmp", "test2.xls");
	$workbook = &new writeexcel_workbook($fname);
	$worksheet = $workbook->addworksheet();
 
//je definit mon 1er format de cellule en violet :
 
 
	$FormatViolet = $workbook->addformat();
	$FormatViolet ->set_bold();
	$FormatViolet ->set_pattern(0x1);
	$FormatViolet ->set_border_color('black');
	$FormatViolet ->set_top(2);
	$FormatViolet ->set_bottom(2);
	$FormatViolet ->set_right(2);
	$FormatViolet ->set_left(2);
	$FormatViolet ->set_align('center');
	$FormatViolet ->set_align('vcenter');
	$FormatViolet ->set_text_wrap();
	$FormatViolet ->set_fg_color(31);
 
// je duplique l'objet et je changer la couleur pour du rose
 
	$FormatRose = clone $FormatViolet;
 	$FormatRose ->set_fg_color(29);
 
// je crée un troisième objet qui est le même que celui dupliqué mais 
// qui lui n'est pas cloné.
 
 	$FormatRose2 = $workbook->addformat();
	$FormatRose2 ->set_bold();
	$FormatRose2 ->set_pattern(0x1);
	$FormatRose2 ->set_border_color('black');
	$FormatRose2 ->set_top(2);
	$FormatRose2 ->set_bottom(2);
	$FormatRose2 ->set_right(2);
	$FormatRose2 ->set_left(2);
	$FormatRose2 ->set_align('center');
	$FormatRose2 ->set_align('vcenter');
	$FormatRose2 ->set_text_wrap();
	$FormatRose2 ->set_fg_color(29);
 
	$worksheet->set_column(0, 2, 50);
	$worksheet->set_row(0, 30);
// Début ecriture
 
 
$worksheet->write(0,0,"Cellule 1 / Couleur : " .$FormatViolet->_fg_color,  $FormatViolet);
$worksheet->write(0,1,"Cellule 2 / Couleur : " .$FormatRose ->_fg_color,  $FormatRose);
$worksheet->write(0,2,"Cellule 3 / Couleur : " .$FormatRose2 ->_fg_color,  $FormatRose2);
 
	$workbook->close();
	header("Content-Type: application/x-msexcel; name=\"devis.xls\"");
	header("Content-Disposition: inline; filename=\"devis.xls\"");
	$fh=fopen($fname, "rb");
	fpassthru($fh);
	unlink($fname);
?>
le resultat :
J'ai une première cellule qui est violette et qui m'affiche le code couleur 31 soit "violet",
Une seconde cellule qui est violette et qui m'affiche le code couleur 29 soit "rose",
la troisième est bien rose avec le code couleur "rose".

Quelqu'un sait il m'expliquer pourquoi ma seconde colonne ne tiens pas compte de la valeur de ma propriété "_fg_color" de mon objet FormatRose ? C'est juste par curiosité parce que quelque chose m'échappe...

Merci à tous.
Images attachées
Type de fichier : jpg xls.jpg (23,3 Ko, 5 affichages)
FendLaBizz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2007, 11h18   #2
Invité de passage
 
Inscription : avril 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 2
Points : 0
Points : 0
Hello,

aucune idée ?

merci.
FendLaBizz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h08.


 
 
 
 
Partenaires

Hébergement Web