IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Transformer un array en xsl ou cvs (ou sortie Excel pour faire simple)


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 107
    Par défaut Transformer un array en xsl ou cvs (ou sortie Excel pour faire simple)
    Bonsoir =)

    Help ! au secours ! je deviens fou ! xD
    J'essai un truc simple sur le papier, mais alors...j'y ai passé la nuit, la journée ...et impossible d'arriver à mes fin, ça me rend fou xD

    J'ai simplement créé un module perso. Il présente un formulaire avec callback 'AJAX' qui permet d'afficher les données en forme de table d'une base de donnée. Tout cela fonctionne à merveille !

    Maintenant ce que je cherche à faire c'est pouvoir exporter mes données array (array construit à partir de db_query_range) vers 'fichier type Excel' et de permettre à un utilisateur d'enregistrer un fichier type tableur qui les contient (pour qu'il puisse taffer sur les donénes avec son Excel).
    Pour le moment, dès que l'utilisateur clic sur "chercher", automatiquement je souhaite que le fichier se télécharge.

    J'ai essayé plein de truc, j'ai recherché partout...mais impossible d'y arriver, et je me mange des erreurs que je ne comprendr pas :

    Exemple : j'ai voulu utiliser le package php_writeexcel se trouvant ici http://www.bettina-attack.de/jonny/v...hp_writeexcel/.
    j'ai repris le code de l'exemple simple de ce package (rien de bien sorcier), ce qui m'a donné :

    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
     
    $fname = tempnam("/tmp", "stocks.xls");
    	$workbook = &new writeexcel_workbook($fname);
    	$worksheet =& $workbook->addworksheet();
     
    	$worksheet->set_column(0, 3, 15);
     
    	# Create a format for the column headings
    	$header =& $workbook->addformat();
    	$header->set_bold();
    	$header->set_size(20);
    	$header->set_color('blue');
     
    	# Write out the data
    	foreach($select as $i=>$element){
    		$worksheet->write(0,$i,$element,$header);
    	}
     
    	foreach($rows as $i=>$row){
    		foreach($row as $j=>$value){
    			$worksheet->write(($i+1), $j,$value);	
    		}
    	}
    	//dpm($workbook);
    	$workbook->close();
     
    	header("Content-Type: application/x-msexcel; name=\"example-stocks.xls\"");
    	header("Content-Disposition: inline; filename=\"example-stocks.xls\"");
     
    	$fh=fopen($fname, "rb");
     
    	fpassthru($fh);
     
    	unlink($fname);
     
    	return;
    et voici l'erreur que j'obtiens...

    Une erreur HTTP AJAX s'est produite.
    Code de statut HTTP : 200
    Informations de débogage ci-dessous.
    Chemin : /chiro/system/ajax
    StatusText: OK
    ResponseText : !!! pleins de caractères byzarre, comme si l'encodage n'était pas bon !!!
    ...[ {"command":"settings", "settings":{"basePath":"\u002Fchiro\u002F", "pathPrefix":"", "ajaxPageState":{"theme":"bartik", "theme_token":"AcMpF7dcJRDsAbzWXyEahmUpEmWizn14AanKwHLlz0M"}, "overlay":{"paths":{"admin":"node\u002F*\u002Fedit\u000Anode\u002F*\u002Fdelete\u000Anode\u002F*\u002Frevisions\u000Anode\u002F*\u002Frevisions\u002F*\u002Frevert\u000Anode\u002F*\u002Frevisions\u002F*\u002Fdelete\u000Anode\u002Fadd\u000Anode\u002Fadd\u002F*\u000Aoverlay\u002Fdismiss-message\u000Auser\u002F*\u002Fshortcuts\u000Aadmin\u000Aadmin\u002F*\u000Abatch\u000Ataxonomy\u002Fterm\u002F*\u002Fedit\u000Anode\u002F*\u002Ftranslate\u000Auser\u002F*\u002Fcancel\u000Auser\u002F*\u002Fedit\u000Auser\u002F*\u002Fedit\u002F*\u000Adevel\u002F*\u000Anode\u002F*\u002Fdevel\u000Anode\u002F*\u002Fdevel\u002F*\u000Acomment\u002F*\u002Fdevel\u000Acomment\u002F*\u002Fdevel\u002F*\u000Auser\u002F*\u002Fdevel\u000Auser\u002F*\u002Fdevel\u002F*\u000Ataxonomy\u002Fterm\u002F*\u002Fdevel\u000Ataxonomy\u002Fterm\u002F*\u002Fdevel\u002F*", "non_admin":"admin\u002Fstructure\u002Fblock\u002Fdemo\u002F*\u000Aadmin\u002Freports\u002Fstatus\u002Fphp"}, "pathPrefixes":[ "en", "fr" ], "ajaxCallback":"overlay-ajax"}}, "merge":true}, {"command":"insert", "method":null, "selector":null, "data":"\u003Cdiv id=\u0027test-ajax\u0027\u003E\u003Ctable\u003E\u003Ccaption\u003ERésultat(s)\u003C\u002Fcaption\u003E\u003Cthead\u003E\u003Ctr\u003E\u003Cth\u003Enom\u003C\u002Fth\u003E\u003Cth\u003Eprenom\u003C\u002Fth\u003E\u003Cth\u003ENumeroSite\u003C\u002Fth\u003E\u003Cth\u003ELatitude\u003C\u002Fth\u003E\u003Cth\u003ELongitude\u003C\u002Fth\u003E\u003Cth\u003EAltitude\u003C\u002Fth\u003E\u003Cth\u003EDatePrise\u003C\u002Fth\u003E\u003C\u002Ftr\u003E\u003C\u002Fthead\u003E\u003Ctbody\u003E\u003Ctr\u003E\u003Cth\u003Elopez\u003C\u002Fth\u003E\u003Cth\u003Ematthieu\u003C\u002Fth\u003E\u003Cth\u003E1\u003C\u002Fth\u003E\u003Cth\u003E123456\u003C\u002Fth\u003E\u003Cth\u003E123456\u003C\u002Fth\u003E\u003Cth\u003E12345\u003C\u002Fth\u003E\u003Cth\u003E2013-02-03\u003C\u002Fth\u003E\u003C\u002Ftr\u003E\u003Ctr\u003E\u003Cth\u003Elopez\u003C\u002Fth\u003E\u003Cth\u003Ematthieu\u003C\u002Fth\u003E\u003Cth\u003E42\u003C\u002Fth\u003E\u003Cth\u003E453453\u003C\u002Fth\u003E\u003Cth\u003E456456\u003C\u002Fth\u003E\u003Cth\u003E56456\u003C\u002Fth\u003E\u003Cth\u003E2013-02-05\u003C\u002Fth\u003E\u003C\u002Ftr\u003E\u003C\u002Ftbody\u003E\u003C\u002Ftable\u003E\u003C\u002Fdiv\u003E", "settings":null}, {"command":"insert", "method":"prepend", "selector":null, "data":"", "settings":null} ]
    Alors j'ai tenté de caller des "dpm(...);" ici et là mais ça ne m'a pas vraiment aidé.. je me suis dit qu'il devait peut etre avoir un soucis d'encodage (vu l'erreur byzarre que j'ai), donc j'ai convertit tout mon module y compris le package en UTF8..mais pas d'amélioration...

    J'ai essayé d'autres packages, mais toujours pareil, des erreurs qui sortent de je ne sais ou et qui me rendent fou xD (faudrait que j'aille dormir un peu peut être haha)

    Je remercie d'avance le petit Jésus du forum qui va me sortir la solution que j'aurai du voir dès le début, toute simple, toute facile et qui m'aurait économisé ces longues heures de galère x)

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 107
    Par défaut
    J'ai également voulu tester le module "phpexcel" qui se trouve ici :
    http://drupal.org/node/1351450

    L'exemple, ma foi très simple, ici :
    http://code.google.com/p/php-excel/wiki/QuickUsageGuide

    Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $myarray =  array (
    			1 => array ("Oliver", "Peter", "Paul"),
    			array ("Marlene", "Mica", "Lina")
    		);
     
    		$xls = new Excel_XML;
    		$xls->addArray ( $myarray );
    		$xls->generateXML ( "testfile" );
    Me donne l'erreur suivante :

    Une erreur HTTP AJAX s'est produite.
    Code de statut HTTP : 200
    Informations de débogage ci-dessous.
    Chemin : /chiro/system/ajax
    StatusText: OK
    ResponseText :
    Oliver
    Peter
    Paul
    Marlene
    Mica
    Lina
    [ {"command":"settings", "settings":{"basePath":"\u002Fchiro\u002F", "pathPrefix":"", "ajaxPageState":{"theme":"bartik", "theme_token":"AcMpF7dcJRDsAbzWXyEahmUpEmWizn14AanKwHLlz0M"}, "overlay":{"paths":{"admin":"node\u002F*\u002Fedit\u000Anode\u002F*\u002Fdelete\u000Anode\u002F*\u002Frevisions\u000Anode\u002F*\u002Frevisions\u002F*\u002Frevert\u000Anode\u002F*\u002Frevisions\u002F*\u002Fdelete\u000Anode\u002Fadd\u000Anode\u002Fadd\u002F*\u000Aoverlay\u002Fdismiss-message\u000Auser\u002F*\u002Fshortcuts\u000Aadmin\u000Aadmin\u002F*\u000Abatch\u000Ataxonomy\u002Fterm\u002F*\u002Fedit\u000Anode\u002F*\u002Ftranslate\u000Auser\u002F*\u002Fcancel\u000Auser\u002F*\u002Fedit\u000Auser\u002F*\u002Fedit\u002F*\u000Adevel\u002F*\u000Anode\u002F*\u002Fdevel\u000Anode\u002F*\u002Fdevel\u002F*\u000Acomment\u002F*\u002Fdevel\u000Acomment\u002F*\u002Fdevel\u002F*\u000Auser\u002F*\u002Fdevel\u000Auser\u002F*\u002Fdevel\u002F*\u000Ataxonomy\u002Fterm\u002F*\u002Fdevel\u000Ataxonomy\u002Fterm\u002F*\u002Fdevel\u002F*", "non_admin":"admin\u002Fstructure\u002Fblock\u002Fdemo\u002F*\u000Aadmin\u002Freports\u002Fstatus\u002Fphp"}, "pathPrefixes":[ "en", "fr" ], "ajaxCallback":"overlay-ajax"}}, "merge":true}, {"command":"insert", "method":null, "selector":null, "data":"\u003Cdiv id=\u0027test-ajax\u0027\u003E\u003Ctable\u003E\u003Ccaption\u003ERésultat(s)\u003C\u002Fcaption\u003E\u003Cthead\u003E\u003Ctr\u003E\u003Cth\u003Enom\u003C\u002Fth\u003E\u003Cth\u003Eprenom\u003C\u002Fth\u003E\u003Cth\u003ENumeroSite\u003C\u002Fth\u003E\u003Cth\u003ELatitude\u003C\u002Fth\u003E\u003Cth\u003ELongitude\u003C\u002Fth\u003E\u003Cth\u003EAltitude\u003C\u002Fth\u003E\u003Cth\u003EDatePrise\u003C\u002Fth\u003E\u003C\u002Ftr\u003E\u003C\u002Fthead\u003E\u003Ctbody\u003E\u003Ctr\u003E\u003Cth\u003Elopez\u003C\u002Fth\u003E\u003Cth\u003Ematthieu\u003C\u002Fth\u003E\u003Cth\u003E1\u003C\u002Fth\u003E\u003Cth\u003E123456\u003C\u002Fth\u003E\u003Cth\u003E123456\u003C\u002Fth\u003E\u003Cth\u003E12345\u003C\u002Fth\u003E\u003Cth\u003E2013-02-03\u003C\u002Fth\u003E\u003C\u002Ftr\u003E\u003Ctr\u003E\u003Cth\u003Elopez\u003C\u002Fth\u003E\u003Cth\u003Ematthieu\u003C\u002Fth\u003E\u003Cth\u003E42\u003C\u002Fth\u003E\u003Cth\u003E453453\u003C\u002Fth\u003E\u003Cth\u003E456456\u003C\u002Fth\u003E\u003Cth\u003E56456\u003C\u002Fth\u003E\u003Cth\u003E2013-02-05\u003C\u002Fth\u003E\u003C\u002Ftr\u003E\u003C\u002Ftbody\u003E\u003C\u002Ftable\u003E\u003C\u002Fdiv\u003E", "settings":null}, {"command":"insert", "method":"prepend", "selector":null, "data":"", "settings":null} ]

Discussions similaires

  1. [PHP 5.2] Transformer un array avec un élément en string
    Par xillibit dans le forum Langage
    Réponses: 3
    Dernier message: 08/12/2010, 20h25
  2. [XSLT] Transformer un xml en xsl
    Par didine6393 dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 28/10/2009, 18h19
  3. [Dojo] Transformer un Array Javascript en JSON
    Par Tavarez59 dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 15/10/2009, 23h31
  4. Transformation XML via un XSL
    Par dahu17 dans le forum C#
    Réponses: 3
    Dernier message: 11/06/2007, 10h56
  5. [XSLT] [XML->HTML] transformation XML -> HTML via XSL
    Par Great Sayaman dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 11/12/2004, 22h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo