Anglais Francais Prosygma Italie
-
    hebergement asp
prosygma_logo

Techniques

Cette section permet de regrouper un ensemble de techniques ou de scripts qui ont l'originalité d'arriver à résoudre une difficulté avec le moindre effort ou qui sont particulièrement efficaces...

Parceque c'est un format que les utilisateurs connaissent, et qu'il est souvent utilisé pour le publipostage, les fichiers au format Word sont intéressant à créés sur le serveur et à afficher sur le poste client.
Il existe plusieurs façons de générer un document Word sur le serveur depuis ASP :

Présentement, cet article expliquera comment réaliser la quatrième technique en utilisant CDONT. Le problème de la première en effet, c'est le coût des outils utilisés : vérifier par vous même pour les produits afficher à gauche de la feuille, même si certains restent raisonnables et offrent des fonctionnalités que nous ne pourront pas reproduire avec notre technique.

La seconde solution quant à elle ne permet pas facilement d'intégrés des images dans le fichier généré;

La troisième solution pose le problème du logiciel à installer sur le serveur :

La technique présente est en faite extrêmement proche de celle utilisée afin de proposer des fichers HTML sous forme d'archive WEB (*.mht). Le corps du fichier HTML étant mis sous la forme de message mime par la dll CDONT :

	
set message = CreateObject("CDO.Message") 
set conf = CreateObject("CDO.Configuration") 
set message.Configuration = conf 

'Création du message HTML à partir 
'd'une page en ligne
message.CreateMHTMLBody "http://www.google.com" 
	

L'astuce consiste donc à renommer le fichier créé avec l'extention ".doc" et à changer le type MIME de la réponse au client afin de permettre au cas où son ouverture dans Word :

	Response.ContentType =	"application/msword"
	

L'exemple suivant vous montrera comment générer à la volée un fichier Word avant de l'envoyer au client sous la forme d'un fichier Word au format MIME. Par contre, il est à noter que cette méthode restera davantage pratique à utiliser lorsque aucun script javasscript n'apparait dans la page sinon Word le symbolisera comme lors de la création d'une page Web avec DreamWeaver. De même vous ne pourrez pas vous reposer sur une mise en page en pure CSS, vous devrez utiliser des tableaux :

<%

dim message, conf, stream 
set message = CreateObject("CDO.Message") 
set conf = CreateObject("CDO.Configuration") 
set message.Configuration = conf 

'Création du message HTML à partir 
'd'une page en ligne
message.CreateMHTMLBody "http://www.google.com" 

'Récupération du contenu du message dans un flux
set stream = message.GetStream() 

'Sauvegarde du résultat sur le serveur
stream.SaveToFile server.mapPath("google.doc")
Stream.Close
Set Stream = Nothing


Response.buffer = true
with response
 .Clear
 .ContentType =	"application/msword"
 .Charset = "UTF-8"
 .AddHeader "Content-Disposition", _
    "attachment;filename=google.doc"
	  
Set Stream = Server.CreateObject("ADODB.Stream")	  
Const adTypeBinary = 1
Stream.Open
Stream.Type = adTypeBinary
Stream.LoadFromFile server.mapPath("google.doc")

 .BinaryWrite stream.Read
	    

   'Vider le contenu de la réponse contenu dans le buffer
 .Flush
end with

Stream.Close
Set Stream = Nothing

set message= nothing
set conf=nothing
%>