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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 40 629 fois - Téléchargée 28 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

Messages postés
233
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
26 juin 2011
1
Merci pour le code !!
ça fait déja 3h que je retourne internet pour trouver quelque chose de fonctionnel sur ce sujet.
Messages postés
2
Date d'inscription
mercredi 16 mai 2007
Statut
Membre
Dernière intervention
26 mai 2007

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 ;)
Messages postés
1
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
19 septembre 2006

merci c'est c'est un très bon exemple
Messages postés
24
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
7 octobre 2009

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?
Messages postés
473
Date d'inscription
mercredi 7 août 2002
Statut
Membre
Dernière intervention
10 juin 2015

Il est bien sûr devenu possible avec word 2003 d'utiliser le WordML pour générer le document.
Afficher les 43 commentaires

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.