Etat php en msword

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 043 fois - Téléchargée 15 fois

Contenu du snippet

cet exemple à pour objetif la création des états (comme dans le cas de MiscroSoft Access) en format MSWORD pour les bases de données PHP/MYSQL.
ceci et un petit exemple pour editer en MSWORD le contenu de la table user ( le nom de la base de données est My_DataBase).

pour tester cet exemple:
1- créer une base de données nomée : My_DataBase.
2- Lancer le script (sript.txt)
3- Enfin, appeler la page Etat.php à partir de votre navigateur web.

Source / Exemple :


la page Etat.php

<? $hostname_Connection_ET = "localhost"; $database_Connection_ET = "My_DataBase"; $username_Connection_ET = "root"; $password_Connection_ET = ""; $Connection_ET = mysql_pconnect($hostname_Connection_ET, $username_Connection_ET, $password_Connection_ET) or trigger_error(mysql_error(),E_USER_ERROR); mysql_select_db($database_Connection_ET, $Connection_ET); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html><head> <title>Creating a DOC file From DataBase with PHP</title> <META http-equiv=Content-Type content="text/html; charset=iso-8859-1"> <META content=http://schemas.microsoft.com/intellisense/ie5 name=vs_targetSchema> <LINK href="StylesA.css" type=text/css rel=stylesheet> </head> <body bgcolor="#F2F8FF" leftMargin=2 topMargin=2 marginheight="0" marginwidth="0"> <table width="100%" class=Normal border="1" align="center" bordercolor="#F2F8FF" cellspacing="0" cellpadding="0"> <tr> <td width="100%"> <table border="1" width="100%" bordercolor="#B8CCF0"> <tr> <td width="100%" bgcolor="#F2F8FF" bordercolor="#E5F0FF"> </td> </tr> </table> </td> </tr> <tr align="center"> <td> <div align="center"><br><br>The file is creating...</div><br> </td> </tr> </table> <?php $current_dir= getcwd (); // the name of the file $date = getdate(time()); $j = $date["mday"] ; $m = $date["mon"] ; $a = $date["year"]; $myRand = rand (1,999999) ; $file_name =$current_dir."/".$j.$m.$a.$myRand; // create the DOC file $word = new COM("word.application"); //bring word to the front $word->visible = 1; // Create a void document $word->Documents->Add(); $word->Selection->PageSetup->LeftMargin = '1'; $word->Selection->PageSetup->RightMargin = '1'; $word->Selection->PageSetup->TopMargin = '1'; $word->Selection->PageSetup->BottomMargin = '1'; $word->Selection->Font->Name = 'Arial'; $word->Selection->Font->Size = 14; $word->Selection->Font->ColorIndex = 1; //wdDarkRed = 13 //----------------------------------------------------------- GROUPE $query_User = " SELECT * FROM user"; $User = mysql_query($query_User, $Connection_ET) or die(mysql_error()); $row_User = mysql_fetch_assoc($User); $word->Selection->ParagraphFormat->Alignment = 1; $word->Selection->Font->Bold = true; $word->Selection->Font->BoldBi = true; $word->Selection->Font->Underline = 1; $word->Selection->Font->Size = 14; $str="Document created by PHP script by sefaouzi"; $str=strtoupper($str); $word->Selection->TypeText($str); $word->Selection->TypeParagraph(); $word->Selection->TypeParagraph(); $word->Selection->ParagraphFormat->Alignment = 1; $word->Selection->Font->Underline = 0; $word->ActiveDocument->Tables->Add ($word->Selection->Range,1,1,1,0); $word->Selection->TypeText("ETAT en MSWord"); $word->Selection->MoveDown(5,1); $word->ActiveDocument->Tables->Add ($word->Selection->Range,1,4,1,0); $word->Selection->Cells->VerticalAlignment = 1; $word->Selection->Font->Size = 12; $word->Selection->TypeText("User Code"); $word->Selection->MoveRight(1,1); $word->Selection->Font->Size = 12; $word->Selection->TypeText("User Name"); $word->Selection->MoveRight(1,1); $word->Selection->Font->Size = 12; $word->Selection->TypeText("User First Name"); $word->Selection->MoveRight(1,1); $word->Selection->Font->Size = 12; $word->Selection->TypeText("User Adresse"); do { $word->Selection->Font->Bold = false; $word->Selection->Font->Name = 'Times New Roman'; $word->Selection->Font->Size = 10; $word->Selection->MoveDown(5,1); $word->ActiveDocument->Tables->Add ($word->Selection->Range,1,4,1,0); $word->Selection->Font->Bold = true; $word->Selection->Font->Name = 'Times New Roman'; $word->Selection->Font->Size = 10; $word->Selection->TypeText($row_User['Code_User']); $word->Selection->MoveRight(1,1); $word->Selection->Font->Bold = true; $word->Selection->Font->Name = 'Times New Roman'; $word->Selection->Font->Size = 10; $word->Selection->TypeText($row_User['User_Name']); $word->Selection->MoveRight(1,1); $word->Selection->Font->Bold = true; $word->Selection->Font->Name = 'Times New Roman'; $word->Selection->Font->Size = 8; $word->Selection->TypeText($row_User['User_First_Name']); $word->Selection->MoveRight(1,1); $word->Selection->Font->Bold = true; $word->Selection->Font->Name = 'Times New Roman'; $word->Selection->Font->Size = 8; $word->Selection->TypeText($row_User['User_Adresse']); } while ($row_User = mysql_fetch_assoc($User)); $word->Documents[1]->SaveAs($file_name); //close word $word->Quit(); //free object resources $word->Release(); $word = null; $lien=$j.$m.$a.$myRand.'.doc'; ?> <br><br> <table width="50%" border="1" cellspacing="1" cellpadding="2" bordercolor="#FFFFFF" align="center"> <tr> <td bordercolor="#27830E" align="center"> <a href="<?php echo $lien?>" target="_blank"> Download the doc file HERE</a> </td> </tr> </table><br><br> </body> </html>
le script de la base de donnée
#Base de données My_DataBase - table user sur le serveur localhost # phpMyAdmin MySQL-Dump # version 2.2.6 # http://phpwizard.net/phpMyAdmin/ # http://www.phpmyadmin.net/ (download page) # # Serveur: localhost # Généré le : Lundi 26 Janvier 2009 à 15:58 # Version du serveur: 3.23.49 # Version de PHP: 4.2.0 # Base de données: `My_DataBase` # -------------------------------------------------------- # # Structure de la table `user` # CREATE TABLE user ( Code_User int(11) NOT NULL default '0', User_Name varchar(250) NOT NULL default '', User_First_Name varchar(250) NOT NULL default '', User_Adresse varchar(250) NOT NULL default '', PRIMARY KEY (Code_User) ) TYPE=MyISAM; # # Contenu de la table `user` # INSERT INTO user VALUES (1, 'SEB', 'Faouzi', 'Algeria'); INSERT INTO user VALUES (2, 'Bob', 'Ahmed', 'Tunisia');

A voir également

Ajouter un commentaire

Commentaires

cs_stailer
Messages postés
507
Date d'inscription
jeudi 28 mars 2002
Statut
Membre
Dernière intervention
13 mai 2009
1
Hello,

concernant le reporting php avec des outils microsoft, j'ai développé depuis peu ce projet que je commercialise
http://www.spread-share.com

En fait c'est le seul outil capable de se connecter en temps réel sur une base mysql distante (ports fermés), mais il peut aussi faire de l'accès en natif. Bref, vous trouverez toutes les infos sur le site.
LeFauve42
Messages postés
239
Date d'inscription
vendredi 20 octobre 2006
Statut
Membre
Dernière intervention
20 avril 2009

Pas mal mais difficilement utilisable en prod à cause des COMs qui ne sont pas multiplateforme.

Pour générer du Word sur le serveur, je conseillerais plutôt de regarder vers le format .docx d'Office 2007.

Pareil pour les autres fichiers d'office, à par peut-être Excel ou une alternative est d'utiliser le XMLSS qui a l'avantage d'être compatible avec Excel 2003 (pratique si vous avez une grosse base installée sur vos postes clients).

Eric
cs_Mizuka
Messages postés
66
Date d'inscription
jeudi 4 août 2005
Statut
Membre
Dernière intervention
16 décembre 2009

Tu as une version d'Apache qui date de 2002 ?

J'te conseille de faire une montée de version. Il y avait des bugs avec les composants Microsoft qui ont été réglés il y a encore peu de temps ( de l'ordre de quelques mois ).

Tu utilises une solution embarquée pour ton serveur ( ie EasyPHP, WAMP, XAMPP, ... ? )

Miz'
crazygogo
Messages postés
135
Date d'inscription
samedi 18 janvier 2003
Statut
Membre
Dernière intervention
17 avril 2009

En ce qui me concerne:

Windows XP

Apache 20020903

PHP Version 5.2.0
COM support enabled
DCOM support disabled
.Net support enabled

MySQL 5.0.20a
cs_Mizuka
Messages postés
66
Date d'inscription
jeudi 4 août 2005
Statut
Membre
Dernière intervention
16 décembre 2009

J'oubliais une chose. Ce sont ces multiples exceptions non gérées qui m'y font penser.
Je suggère à l'auteur ceci : Puisque le script utilise PHP 5 et fait de l'objet, il serait plus propre et bienvenu de faire les traitements dans un bloc try/catch : Sample ----->
/////
try {
$word = new COM("word.application");
$doc = $word->Documents->Open($docfile);
$doc->Activate();
$doc->PrintOut();
$doc->Close();
$word->Quit();
} catch (com_exception $e) {
if ($doc) $doc->Close();
if ($word) $word->Quit();
print "Erreur : " . $e->getFile() . "(" . $e->getLine()
. ")\n";
print $e->getMessage() . "\n";
}
/////

Miz'

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.