7
votes

Word Automation: remplacer une image en utilisant c #

J'essaie de changer de texte et d'images dans un document Word à l'aide de C # et de Word Automation. Je l'ai bien fonctionné pour le texte où je fais quelque chose comme l'extrait ci-dessous, mais je ne sais même pas comment commencer pour remplacer l'image.

Toute aide est grandement appréciée!

oliver xxx


4 commentaires

Curieux quel genre de solution vous essayez de faire. Est-ce une fonctionnalité que vous exposez à l'intérieur de Word Add-in ou il s'agit d'une sorte d'automatisation par lots à partir d'une application externe? Si externe, je préférerais aller avec le Wordml via OpenXML SDK pour 2007 ou simplement en désordre avec le XML si 2003 à la place. Beaucoup plus rapide et plus facile à faire.


Juste une suggestion. Utiliser vb. Cela fera de votre vie dans la Terre de l'automatisation COM. En ce qui concerne le remplacement des images, vous pouvez rechercher des «gammes» et pourraient peut-être itération du texte et des objets en la recherche de types d'objets d'image.


@ROYGBIV: +1. Vb est beaucoup plus facile pour COM Automation


@oktavakol: Qu'essayez-vous de remplacer l'image?


3 Réponses :


9
votes

Vous pouvez boucler dans les inlineshapes et remplacer les images

using System.Collections.Generic;
using Word = Microsoft.Office.Interop.Word;

namespace WordExample
{
    class WordExample
    {
        #region Constructor
        public WordExample()
        {
            WordApp = new Microsoft.Office.Interop.Word.Application();
        }
        #endregion

        #region Fields
        private Word.Application WordApp;
        private object missing = System.Reflection.Missing.Value;
        private object yes = true;
        private object no = false;
        private Word.Document d;
        private object filename = @"C:\FullPathToFile\example.doc";
        #endregion

        #region Methods
        public void UpdateDoc()
        {
            d = WordApp.Documents.Open(ref filename, ref missing, ref no, ref missing,
               ref missing, ref missing, ref  missing, ref  missing, ref  missing,
               ref  missing, ref missing, ref yes, ref  missing, ref  missing, ref  missing, ref  missing);
            List<Word.Range> ranges = new List<Microsoft.Office.Interop.Word.Range>();
            foreach (Word.InlineShape s in d.InlineShapes)
            {
                if (s.Type == Microsoft.Office.Interop.Word.WdInlineShapeType.wdInlineShapePicture)
                {
                    ranges.Add(s.Range);
                    s.Delete();
                }
            }
            foreach (Word.Range r in ranges)
            {
                r.InlineShapes.AddPicture(@"c:\PathToNewImage\Image.jpg", ref missing, ref missing, ref missing);
            }
            WordApp.Quit(ref yes, ref missing, ref missing);
        }
        #endregion
 }
}


2 commentaires

Excellent code! Mais s'il est possible de déterminer une image dans la boucle? C'est parce que j'ai besoin de remplacer une seule image dans mon projet d'automatisation grâce à l'avance


Je sais que c'est vraiment vieux, mais la seule façon dont vous pouvez vraiment dire des formes, c'est d'ajouter des informations personnalisées. Vous pouvez ajouter un lien hypertexte et utiliser l'adresse ou utiliser le titre TITLE ou Propriétés (CODE> ALTERATIVETEXT Dialog, sous < Code> Texte alternatif ).



1
votes

Voulez-vous remplacer une forme ou une forme en ligne? C'est une grande différence!

Pour une forme en ligne, il y a beaucoup d'exemples sur le net. Pour une forme que vous pouvez faire comme ceci: xxx


0 commentaires

1
votes

Je viens de copier un chemin de @Mario Favere et faites plus facile

  • Créez d'abord une image vierge et insérez une image dans le document Word

     Entrez la description de l'image ici

    • Deuxième besoin d'ajouter le texte de l'alt clic droit sur la photo

       Entrez la description de l'image ici xxx


0 commentaires