Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[C#] AUTOMATION AVEC WORD


Information sur le tutorial

Catégorie :Tutoriaux Tutorial .NET ( DotNet ) Date de création : 14/09/2004 15:33:14 Vu : 29 324 fois

Note :
8 / 10 - par 5 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

Tutorial

L'automation Word

Tutorial de: Benjamin Naxos

Sources: Livre ".net" par Dick Lantim

1. Introduction

L'automation Word consiste à utiliser les services du logiciel Word dans une application.

Ce petit tutorial explique les étapes à franchir pour pouvoir ouvrir Word, créer une nouvelle feuille et la remplir par le biais d'une application réalisée en c# avec SharpDevelop.

(A ma connaissance tout ce qui fonctionne sous SharpDevelop est à priori susceptible de fonctionner sous Visual c# .net)

2. Importation de la TLB de Word

La première étape consiste à générer l'assemblage Word.dll qui contiendra les classes proxy utiles au contrôle de Word par automation.

Vérifiez que vous possédez le fichier MSWORD.OLB situé dans:

C:\Program Files\Microsoft Office\Office10\

Utilisez l'outil "tlbimp.exe" fourni dans le SDK .net de la façon suivante:

  • Lancez une invite de commande.
  • Tapez "tlbimp C:\Program Files\Microsoft Office\Office10\ MSWORD.OLB"

(Pour taper cette commande placer vous dans le répertoire où se situe l'outil "tlbimp.exe":

C:\Program Files\Microsoft .net\SDK\v1.1\Bin\)

Le répertoire Bin doit maintenant contenir 3 fichiers .dll en plus:

  • Word.dll
  • Office.dll
  • VBIDE.dll

Il vous suffit de copier-coller ces 3 fichiers dans le répertoire du projet que vous développez.

 

3. Référencement de l'assemblage

Pour utiliser les classes il vous faut référencer les assemblages.

  • Sous SharpDevelop, faites un click droit sur le dossier "Références" situé dans l'arborescence du projet puis sélectionnez "Ajouter une référence".
  • Choisissez "Browser d'assemblies .net" puis cliquez sur "parcourir".
  • Ajoutez ainsi les 3 dll précédemment extraites et confirmez avec "ok".

4. Utilisation de base des classes

Pour ouvrir Word tapez les lignes suivantes dans l'évènement click d'un bouton par exemple:

/* Lancement du processus Word grâce à l'instanciation de la classe "ApplicationClass" */

Word.ApplicationClass wa = new Word.ApplicationClass();

/* Montrer la fenêtre du processus */

wa.Visible=true;

Pour créer un nouveau document en y ajoutant du texte:

/* Création de la feuille */

Word.DocumentClass wd = new Word.DocumentClass();

/* Activation de la feuille */

wd.Activate();

/* Insertion de texte dans la feuille */

wd.Content.InsertAfter("Salut");

 

Toutes les fonctions de Word sont disponibles avec un peu de recherche dans les différentes classes.

Ce code a été testé avec Word XP, le SDK v1.1 et SharpDevelop RC3.

 

 

signaler à un administrateur
Commentaire de alncool le 22/06/2005 18:02:30

Franchement qu'une chose à dire :
Simple... rapide et très fonctionnel!
Je ne peux pas en dire autant de plusieurs autres sources et tutoriels sur le sujet...

Vraiment merci tu m'enlève une épine du pied ;)

Cependant si tu pourrais me dire si tu le sais quel est la fonction pour ajouter un champ de texte et une case à cocher sa serai le comble. En attendant je cherche ^^

signaler à un administrateur
Commentaire de alncool le 04/07/2005 17:09:15

C'est bon j'ai trouvé pour les champ et les cases à cocher ... cependant impossible de trouver comment récuperer le Range du curseur. En fait je voudrai générer un champ automatisé à l'endroit du curseur donc si quelqu'un a une idée...

PS si quelqu'un veut savoir comment j'ai fait, qu'il m'envoie un message privé ;)

signaler à un administrateur
Commentaire de Skwipy le 12/04/2006 04:57:55

C'est quoi qu'on fait quand on a pas le fichier .OBL????

merci

signaler à un administrateur
Commentaire de reghasnaa le 15/09/2006 16:56:36

bonjour

comment je peux résourdre ce problème :
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Accès refusé.
Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

Détails de l'exception: System.UnauthorizedAccessException: Accès refusé.

ASP.NET n'est pas autorisé à accéder à la ressource demandée. Accordez des droits d'accès à la ressource pour l'identité de la demande ASP.NET. ASP.NET a une identité de processus de base (en règle générale {MACHINE}\ASPNET sur IIS 5 ou Network Service sur IIS 6) qui est utilisée si l'application n'emprunte pas d'identité. Si l'application emprunte une identité via <identity impersonate="true"/>, l'identité sera l'utilisateur anonyme (en règle générale IUSR_MACHINENAME) ou l'utilisateur de la demande authentifié.

Pour accorder un accès en écriture ASP.NET à un fichier, cliquez avec le bouton droit sur le fichier dans l'Explorateur, choisissez "Propriétés" et sélectionnez l'onglet Sécurité. Cliquez sur "Ajouter" pour ajouter l'utilisateur ou le groupe approprié. Sélectionnez le compte ASP.NET et activez les cases à cocher pour l'accès souhaité.

Erreur source:


Ligne 34 :
Ligne 35 :         Dim objWord As Word.ApplicationClass
Ligne 36 :         objWord = New Word.ApplicationClass

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

signaler à un administrateur
Commentaire de gailenepsx le 25/07/2007 13:21:30

J'ai un problème avec le pilotage de MS Word en csharp.
Je cherche comment renvoyer la retour à la ligne à MS Word, j'ai essayer \n mais ça marche pas.
Svp si vous connaissez une solution!
Je vous attend.

signaler à un administrateur
Commentaire de slmnsnts le 14/08/2007 09:29:22

salut,

pour le retour à la ligne c'est :
...
Word.Paragraph oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing);
>>> oPara1.Range.InsertBreak();

pour les tableaux et le reste sur http://support.microsoft.com/kb/316384

signaler à un administrateur
Commentaire de Dedech le 29/10/2007 12:36:32

J'ai un problème!!! help, je remplis des signets depuis une page asp. Cependant, lorsque la longueur de la chaine de caractere est supérieure a 255, l'export n'est pas possible (probleme avec Word).
Pr info, nécessité de mettre toute la chaine de caractere dans le même signet.
Comment puis je contourner ce problème???

signaler à un administrateur
Commentaire de dadamagouil le 11/12/2007 07:57:40

Je me demandais aussi comment on fais si on a pas les fichiers décrit plus haut ?

signaler à un administrateur
Commentaire de ultima93 le 14/12/2007 17:27:37

Si tu n'as pas les fichiers, tu ne pourras pas piloter Word.
De plus tu est obligé d'installer Word sur le serveur car le processus WinWord.exe est lancé à chaque appel de word.

J'ai cherché une solution pour utiliser Word via les dll et base de registre sans l'installer mais sans succes.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,19 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.