EcommerceDEV. Développement, optimisation et sécurisation des sites de commerce électronique.
arrowAccueil arrow Programmation arrow J2EE/Java(script) arrow Créer un document MSWord depuis une page ASP lorsque Microsoft Word est installé sur le serveur
Samedi 5 juil 2008
Nom d'utilisateur     Mot de passe      Conserver       Mot de passe perdu ? 
Menu
Accueil
A propos du site
Carte du site
Moteur de recherche
Nouvelles
Contactez-nous
Evénements
Lettres de nouvelles
- - - - - - -
Analyse
Conception
Optimisation
Programmation
Sécurité
Produits/Services
avr 11 2006
Créer un document MSWord depuis une page ASP lorsque Microsoft Word est installé sur le serveur Version imprimable Suggérer par mail
Appréciation des utilisateurs: / 2
FaibleMeilleur 
Programmation - ASP/.Net/PHP
Ecrit par www.asp-php.net   
11-04-2006
créer un document MSWord depuis une page ASP lorsque Microsoft Word est installé sur le serveur

Ce script permet de créer un document MSWord depuis une page ASP à la condition que Microsoft Word soit installé sur le serveur. Le contenu du document est ici extrait d'une base MSAccess servant à une gestion de contacts/clients. Si vous souhaitez créer un document Word sans que Microsoft Word ne soit installé sur le serveur consulter cet article.

Une première lecture du script nous permet de faire les constations suivantes:


- Il faut avoir Word sur le serveur. A défaut la méthode CreateObject génèrera une erreur.
- Pour pouvoir accéder à WORD en ASP, Word doit avoir été utilisé sur le serveur par le compte utilisé lors de l'accès web. Dans Word, il faut ouvrir l'éditeur VBA, puis refermer. Cela permet d'écrire un fichier par défaut, genre normal.dot. Si ce fichier est absent, vous obtiendrez  l'erreur suivante : "Impossible d'ouvrir la macro de stockage".
- Création de l'objet Word Set WordApp = CreateObject("word.application")
- Mise en mode invisible WordApp.Application.Visible = false
- Création du document Set WordDoc = WordApp.Documents.Add()
- Pour chaque paragraphe :


<%
' Ajout du paragraphe
Set newpar = WordDoc.Paragraphs.Add
set newrange = newpar.range
' Définition du style du paragraphe
with newrange
.Bold = False
.Italic = false
.Font.Name = "Verdana"
.Font.size = "12"
.ParagraphFormat.Alignment = 1
' ou utilisation d'un style interne : .Style = "Titre 1"
end with
' Insertion du contenu du paragraphe
newrange.insertBefore("Mon texte dans ce paragraphe" & vbcrlf)
' ou d'un saut de page : newrange.insertBreak
%>


# Enregistrement du document WordDoc.SaveAs server.mapPath("doc/temp.doc")
# Déconnexion de Word WordDoc.Close : WordApp.Quit


Voici à présent, le script complet :


access2word.asp
<% ' Export Word pour Access - Script de Guillaume

' Connexion à la base de données.
' Pensez à remplacer db_path par votre chemin + fichier

set db = Server.CreateObject("ADODB.Connection")
db.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & db_path

set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * from Table ", db, 1, 2

' déclaration de deux futurs objets
dim WordApp, WordDoc

' Création de l'objet application word
Set WordApp = CreateObject("word.application")

' Pas la peine de démarrer Word sur le serveur, on n'y est pas !!!
WordApp.Application.Visible = false

' Création du document Word
Set WordDoc = WordApp.Documents.Add()

' Parcours du recordset. Pour chaque Item, création de plusieurs paragraphes contenant
' les informations de la base.
' Puis saut de page.
' Attention, là c'est du VBA Word, qui peut parfois être un peu étrange
' Par exemple, l'opérateur := du VBA ne passe pas en ASP. Donc remplacer par
' des parenthèses.
' De même, les constantes VBA genre WdAlignCenter ne sont pas connues en ASP
' et retournent donc 0. Il faut donc utiliser leur valeur entière (0, 1, 2...)

Do while not rs.EOF

Set Mypar1 = WordDoc.Paragraphs.Add
set MyRange1 = Mypar1.range
MyRange1.InsertBefore(rs.fields.item("Client").value & vbcrlf)
MyRange1.Style = "Titre 1"
MyRange1.ParagraphFormat.Alignment = 1

Set newpar = WordDoc.Paragraphs.Add
set newrange = newpar.range

with newrange
.Bold = False
.Italic = false
.Font.Name = "Verdana"
.Font.size = "12"
end with

newrange.insertBefore("Téléphone standard : " & rs.fields.item("tel_standard").value & vbcrlf)
newrange.insertBefore("Activité : " & rs.fields.item("activite").value & vbcrlf)
newrange.insertBefore(rs.fields.item("Commune").value & vbcrlf)

newrange.insertBefore(rs.fields.item("CP").value & vbcrlf)
newrange.insertBefore(rs.fields.item("Adresse3").value & vbcrlf)
newrange.insertBefore(rs.fields.item("Adresse2").value & vbcrlf)
newrange.insertBefore(rs.fields.item("Adresse1").value & vbcrlf)

Set Mypar2 = WordDoc.Paragraphs.Add
set MyRange2 = Mypar2.range
MyRange2.InsertBefore("Représentant : " & rs.fields.item("Prenom").value & " " & rs.fields.item("Nom").value)
MyRange2.Font.Bold = true

set Myparag2 = WordDoc.Paragraphs.add
set Myrang2 = Myparag2.range

with Myrang2
.Bold = False
.Italic = True
.Font.Name = "Verdana"
.Font.size = "10"
end With

myrang2.insertBefore("email : "& rs.fields.item("email").value & vbcrlf)
myrang2.insertBefore("Mobile : "& rs.fields.item("mobile").value & vbcrlf)
myrang2.insertBefore("Fax : "& rs.fields.item("fax").value & vbcrlf)
myRang2.insertBefore("Téléphone : "& rs.fields.item("tel").value & vbcrlf)

Set Mypar3 = WordDoc.Paragraphs.Add
set MyRange3 = Mypar3.range
MyRange3.InsertBefore("Date du contact : " & rs.fields.item("Date").value )
MyRange3.Font.Bold = False

Set Mypar4 = WordDoc.Paragraphs.Add
set MyRange4 = Mypar4.range

MyRange4.InsertBefore("Commentaire : " & rs.fields.item("commentaire").value )
MyRange4.Font.Bold = False

rs.movenext

if not rs.EOF then
' Paragraphe de saut de page tant qu'il reste des enregistrements

Set Mypar5 = WordDoc.Paragraphs.Add
set MyRange5 = Mypar5.range
MyRange5.InsertBreak

Set Mypar5 = WordDoc.Paragraphs.Add
set MyRange5 = Mypar5.range
end if

Loop

' enregistrement du document au format word

WordDoc.SaveAs server.mapPath("doc/temp.doc")

' fermeture du document
WordDoc.Close
' et de Word
WordApp.Quit
' et du recordSet
rs.close
' et d'Access
db.close

Set WordDoc = Nothing
Set WordApp = Nothing
Set rs = Nothing
Set db = Nothing

' redirection du navigateur vers le document pour le visualiser, l'imprimer et le sauvegarder en local.
response.redirect "doc/temp.doc"
%>

 

Référence: http://www.asp-php.net/

 

Dernière mise à jour : ( 11-04-2006 )
< Précédent   Suivant >
Java-XML et oracle : E-commerce - EAI - portails d'entreprise - Applications mobiles
Java-XML et oracle : E-commerce - EAI - portails d'entreprise - Applications mobiles

Cet ouvrage montre comment tirer parti de l'offre Java-XML d'Oracle, tant au niveau de la base de données Oracle8i (drivers JDBC, conteneur EJB, ORB Corba, XSQL...), que des produits associés, outils XML-XSLT, JDeveloper, Oracle9i Application Server, etc.


L'ouvrage insiste tout particulièrement sur les problèmes d'intégration de ces technologies, de design des architectures et de scalabilité des applications. II est illustré de nombreux exemples de code et de deux études de cas, une application e-commerce construite à l'aide d'EJB et un serveur de documents XML multithread.

 

Références

 

Lien sur le site d'Amazon.

Fréderic Berque, Serge Frezefond, Ludovic Sorriaux

Titre : Java, XML et Oracle
Éditeur : Eyrolles
Collection : Solutions Développeurs
Parution : mars 2001
634 pages
ISBN : 2-212-09149-4
EAN13 : 9782212091496

Moteur de recherche
Recommander ce site
Collaboration
Téléchargements
Derniers événements
Aucun événement
Sondages

En Java, quelle la meilleure technique pour programmer un panier d’achat ?

  
Blogs Ecommerce
Blog de capitaine commerce
top

Ce site a été crée avec le CMS Mambo. Un logiciel gratuit disponible sous licence GPL.

Copyright Ecommerce DEV 2006.

Hosted by SiteGround