Création d'un document word sans word sur le serveur

Contenu du snippet

On peut au besoin générer un document word sur un serveur en appelant le composant correspondant mais avec quelques utilisateurs on monte très vite en charge. De plus, tout doit être configuré côté serveur et on peut remarquer dans les forums que c'est pas si simple à mettre en oeuvre.

Pour palier à ces problèmes, un langage universel dans le mode texte, le RTF, nous permet de générer des documents Word ou RTF sans aucun composant.
Ci-dessous un bout de code afin de créer un simple document Word avec les infos fichier, les entêtes et pieds de page ainsi qu'un simple texte avec un tableau.

Source / Exemple :


Dim fso, MyFile,sRTF

'Creation du fichier pour le RTF
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile(Server.MapPath("document.doc"), True)

' Ecriture RTF : définition des styles
MyFile.WriteLine("{\rtf1\ansi\deff0")
sRTF =	"{\fonttbl" &_
	"{\f0\fnil\fprq2\fcharset0\fs20 Arial;}" &_
	"}"
MyFile.WriteLine(sRTF)

' Infos Fichier
MyFile.WriteLine(	"{\info" & _
		"{\title Votre Titre }" & _
		"{\subject Mon premier document}" & _
		"{\author Zeb13}" & _
		"{\operator RD medias}" & _
		"}")

' Entêtes & Pieds de Page
MyFile.WriteLine(	"{\header\pard\qc " &_
		"{\fs30 ::: Zeb13 - RD medias :::\par} ") & _
		"}"
MyFile.WriteLine(	"{\footer\pard\qc\brdrt\brdrs\brdrw10\brsp100" & _
                                "\fs18 Page " & _
                                "{\field{\*\fldinst PAGE}{\fldrslt 1}} sur " & _
                                "{\field{\*\fldinst NUMPAGES}{\fldrslt 1}} \par}")

' Création du document ========================
' le tableau
sRTF =	"\par {"
sRTF =	sRTF & "\trowd\cellx9000\pard\intbl  \cell{\row}"
sRTF =	sRTF & "\trowd\clbrdrb\brdrs\cellx9000\pard\intbl\b > Un titre dans un tableau \b0\cell{\row}"			
sRTF =	sRTF &"\trowd\cellx9000\pard\intbl "
sRTF =	sRTF &"\bullet\~ Nom Prénom (par exemple) \par\plain\ql "
sRTF =	sRTF &" \cell{\row}"
sRTF =	sRTF &"}"
' le texte
sRTF =	sRTF & "\par {"
sRTF =	sRTF &"Un simple texte dans votre document. \par"
sRTF =	sRTF &"}"

sRTF =	sRTF &"\pagebb"	
MyFile.WriteLine(sRTF)

MyFile.WriteLine("}")

' Astuce pour lancer en auto le document créé, remplacez adressedevotresite
Response.Write "<META HTTP-EQUIV=""REFRESH"" Content=""0;URL=adressedevotresite/document.doc"">"

Conclusion :


Attention car la moindre ouverture ou fermeture de commande plante la page ASP sans aucune information. Aussi pour commencer faîtes juste un response.write de la variable SRTF afin de voir son contenu, avant de l'enregistrer.

Toute la doc sur le RTF by MSN :
http://msdn.microsoft.com/library/?url=/library/en-us/dnrtfspec/html/rtfspec.asp?frame=true?frame=true

Have a good luck ..., Zeb13.

A voir également

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.