|
|
avr
11
2006
|
Créer un document MSWord depuis une page ASP lorsque Microsoft Word est installé sur le serveur |
|
|
|
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 )
|
|
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
|
|
|