Soyez le premier à donner votre avis sur cette source.
Vue 26 366 fois - Téléchargée 1 996 fois
using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using Microsoft.Office.Interop.Word; namespace GestionOfficeWord { class GestionWord { #region Déclarations Microsoft.Office.Interop.Word.Application _ApplicationWord; Microsoft.Office.Interop.Word._Document _MonDocument; //Microsoft.Office.Interop.Word.Selection _MaSelection; Microsoft.Office.Interop.Word.Range _MonRange; Bookmark _MonSignet; Bookmarks _MesSignets; InlineShape _MonImage; object M = System.Reflection.Missing.Value; #endregion #region Initialisation Sauvegarde /// <summary> /// Cette classe sert d'interface entre word et une apllication C#. /// Le constructeur démarre word. /// </summary> public GestionWord() { //_ApplicationWord = new ApplicationClass(); _ApplicationWord = new Microsoft.Office.Interop.Word.Application(); _ApplicationWord.Visible = true; } /// <summary> /// Ouvre un fichier existant. /// </summary> /// <param name="FileName">Chemin du document</param> public void OuvrirFichier(string FileName) { object oFileName = (object)FileName; object Faux = (object)false; object Vrai = (object)true; _MonDocument = _ApplicationWord.Documents.Add(ref oFileName, ref Faux, ref M, ref Vrai); } /// <summary> /// Enregistrer le document sous. /// </summary> /// <param name="FileName">Chemin du docmuent</param> public void Sauver(string FileName) { object oFileName = (object)FileName; object Faux = (object)false; object Vrai = (object)true; try { _MonDocument.SaveAs(ref oFileName, ref M, ref M, ref M, ref M, ref M, ref M, ref M, ref M, ref M, ref M, ref M, ref M, ref M, ref M, ref M); } catch { MessageBox.Show("Le fichier Word n'a pas pu être enregistré.", "Erreur d'enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } /// <summary> /// Fermer le document et l'application word. /// </summary> public void Fermer() { _MonDocument.Close(ref M, ref M, ref M); _ApplicationWord.Application.Quit(ref M, ref M, ref M); } #endregion #region Manipulation document /// <summary> /// Fusionne plusieurs documents en un seul. /// </summary> /// <param name="FichierPrincipal">Document à la suite duquel les autres seront insérer.</param> /// <param name="FichiersAInserer">Tableau contenant les chemins des documents à insérer</param> public void FusionnerPlusieurFichiers(string FichierPrincipal,string[] FichiersAInserer) { this.OuvrirFichier(FichierPrincipal); //on insere une page vierge sinon ça merde, nécessit une signet à la fin de la page this.AtteindreSignet("FinPage"); object Type = (object)WdBreakType.wdPageBreak; _MonRange.InsertBreak(ref Type); //on insere les fichiers words exétieurs //decompte à l'envers car, il insere le fichier apres le saut de page, //puis le fichier suivant au même endroit etc.. for (int i = FichiersAInserer.Length - 1; i > -1; i-- ) { string FileName = FichiersAInserer[i]; _MonRange.InsertFile(FileName, ref M, ref M, ref M, ref M); } //on supprime la page vierge this.SupprimePage(FichiersAInserer.Length + 2); } /// <summary> /// Supprime une page. /// </summary> /// <param name="NumeroPage">Numéro de la page à supprimer</param> public void SupprimePage(int NumeroPage) { AtteindrePage(NumeroPage); //Supprime la selection Selection MaSelection = _ApplicationWord.Selection; MaSelection.TypeBackspace(); } /// <summary> /// Insere un saut de page aprés le range /// </summary> public void InsererPage() { Object Typ = (object)WdBreakType.wdPageBreak; _MonRange.InsertBreak(ref Typ); } #endregion #region Traitement de Texte /// <summary> /// Atteindre un signet dans le document. /// </summary> /// <param name="NomSignet"></param> /// <returns></returns> public bool AtteindreSignet(string NomSignet) { object Nom = (object)NomSignet; //récupére la liste de signets _MesSignets = _MonDocument.Bookmarks; //si le signet cherché existe if (_MesSignets.Exists(NomSignet)) { //on positionne le range sur le signet et la fonction retourne true _MonSignet = _MesSignets.get_Item(ref Nom); _MonSignet.Select(); _MonRange = _MonSignet.Range; return true; } else { //Un message d'erreur est affiché, et la fonction retourne false MessageBox.Show(string.Format("Le signet {0} n'existe pas dans le fichier.", NomSignet), "Insertion impossible", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return false; } } /// <summary> /// Atteindre un signet dans le document et insérer du texte aprés. /// </summary> /// <param name="NomSignet"></param> /// <param name="Texte">Texte à insérer</param> /// <returns></returns> public bool AtteindreSignet(string NomSignet, string Texte) { //si on a atteint le signet if (AtteindreSignet(NomSignet)) { //on insère le texte aprés le signet, la fonction retourne true _MonRange.InsertAfter(Texte); return true; } return false; } /// <summary> /// Ecrire du texte à la suite de l'emplacement séléctionné. /// </summary> /// <param name="Texte"></param> /// <returns></returns> public bool EcrireTexteApresLaSelection(string Texte) { try { //on insère le texte aprés le signet, la fonction retourne true _MonRange.InsertAfter(Texte); return true; } catch { return false; } } /// <summary> /// Applique la valeur WdParagraphAlignment à un range /// </summary> /// <param name="Alignement"></param> public void AlignementRange(WdParagraphAlignment Alignement) { _MonRange.ParagraphFormat.Alignment = Alignement; } /// <summary> /// Atteint et selectionne une page /// </summary> /// <param name="NumeroPage"></param> public void AtteindrePage(int NumeroPage) { object what = (object)WdGoToItem.wdGoToPage; object whitch = (object)WdGoToDirection.wdGoToFirst; object Numero = (object)NumeroPage; //Atteindre la page voulue _MonRange = _MonDocument.GoTo(ref what, ref whitch, ref Numero, ref M); //La selectionner _MonRange.Select(); } #endregion #region Image /// <summary> /// Insere une photo à l'endroit sélectionné. /// </summary> /// <param name="FichierImage"></param> public void InsereImage(string FichierImage) { //Selection.InlineShapes.AddPicture FileName:= _ object False = (object)false; object True = (object)true; _MonImage = _MonRange.InlineShapes.AddPicture(FichierImage, ref False, ref True, ref M); } /// <summary> /// Modifie la taille de l'image. /// </summary> /// <param name="Pourcent"></param> public void TailleImage(int Pourcent) { float Height = _MonImage.Height;// = 360.3 float Width = _MonImage.Width;// = 256.8 _MonImage.Height = Height * Pourcent / 100; _MonImage.Width = Width * Pourcent / 100; } #endregion public void InertionTableau(int NombreLignes, int NombreColones) { object defaultTableBehavior = (object)WdDefaultTableBehavior.wdWord9TableBehavior; object autoFitBehavior = (object)WdAutoFitBehavior.wdAutoFitFixed; _MonDocument.Tables.Add(_MonRange, NombreLignes, NombreLignes, ref defaultTableBehavior, ref autoFitBehavior); _MonRange = _MonDocument.Tables[_MonDocument.Tables.Count].Range; } } }
13 avril 2018 à 13:52
13 avril 2018 à 13:10
15 nov. 2017 à 22:20
Ajout de la possibilité de mettre un tableau.
Ajout d'une version VB.net dans le zip.
14 mars 2010 à 22:25
Donc en gros si j'ai bien compris, il faut juste que j'appel la méthode InsertImage a la place de la méthode InsertAfter?
Merci encore je vais étudier ton code à fond
12 mars 2010 à 21:23
Par contre, je ne sais pas comment faire pour l'image, je vais regarder.
@+
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.