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

3/5 (43 avis)

Snippet vu 41 069 fois - Téléchargée 30 fois

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

Ajouter un commentaire Commentaires
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 5
7 déc. 2010 à 11:48
Merci pour le code !!
ça fait déja 3h que je retourne internet pour trouver quelque chose de fonctionnel sur ce sujet.
Billyprog Messages postés 2 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 26 mai 2007
21 mai 2007 à 16:02
Bonjour,
je cherche à produire un "Créateur automatique de livres de partitions(tablook).
Pour celà j'ai divisé mon travail en trois tâches:
1)Créer un répertoire de partitions
2)générer un RTF
3)Créer un document Word

Je souhaite effectuer ce travail sous Visual Studio.Net 2005.
Je pense utiliser des classes CFile ou CStudio File et utiliser une boîte de dialogue comme interface.
Seulement, je ne suis pas habitué à l'utilisation de fichiers textes. Si vous avez des idées, conseils ou autres choses à me proposer je suis preneur.
Merci d'avance ;)
vbmoh Messages postés 1 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 19 septembre 2006
19 sept. 2006 à 12:03
merci c'est c'est un très bon exemple
lmu Messages postés 24 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 7 octobre 2009
19 août 2006 à 09:32
Hello, j'utilises cette technique deuis quelques temps, mais il me reste un problème de fond.

Le document rtf s'ouvre dans Internet explorer avec des pseudos fonction de word et non directement dans word.

Est-ce que quelqu'un sait comment ouvrire le document dans l'application word?
cs_Warny Messages postés 473 Date d'inscription mercredi 7 août 2002 Statut Membre Dernière intervention 10 juin 2015
12 sept. 2005 à 14:12
Il est bien sûr devenu possible avec word 2003 d'utiliser le WordML pour générer le document.

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.