2016-04-22 48 views
0

我有这段代码用于搜索文本并将其替换为MS word文档中的另一个文本。我想做类似的操作。找到文本并将其替换为图像。我可以传递文件位置,图像位置。如何查找文本并将其替换为C中的图像#

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Diagnostics; 
    using System.IO; 
    using word = Microsoft.Office.Interop.Word; 
    using System.Runtime.InteropServices; 
    //using System.Drawing; 


    namespace WritingIntoDocx 
    { 
     [ComVisible(true)] 
     public interface IMyClass 
     { 

      void DocumentDigitalSign(string filep,string findt,string replacet); 
     } 


     [ComVisible(true)] 
     [ClassInterface(ClassInterfaceType.None)] 

     public class Program : IMyClass 
     { 
      public void DocumentDigitalSign(string filep, string findt, string replacet) 
      { 
       string filepath = filep; 
       string Findtext = findt; 
       string ReplaceText = replacet; 
       word.Application app = new word.Application(); 
       word.Document doc = app.Documents.Open(filepath); 

       word.Range myStoryRange = doc.Range(); 

       //First search the main document using the Selection 
       word.Find myFind = myStoryRange.Find; 
       myFind.Text = Findtext; 
       myFind.Replacement.Text = ReplaceText; 
       //myFind.Replacement. 
       myFind.Forward = true; 
       myFind.Wrap = word.WdFindWrap.wdFindContinue; 
       myFind.Format = false; 
       myFind.MatchCase = false; 
       myFind.MatchWholeWord = false; 
       myFind.MatchWildcards = false; 
       myFind.MatchSoundsLike = false; 
       myFind.MatchAllWordForms = false; 
       myFind.Execute(Replace: word.WdReplace.wdReplaceAll); 

       //'Now search all other stories using Ranges 
       foreach (word.Range otherStoryRange in doc.StoryRanges) 
       { 
        if (otherStoryRange.StoryType != word.WdStoryType.wdMainTextStory) 
        { 
         word.Find myOtherFind = otherStoryRange.Find; 
         myOtherFind.Text = Findtext; 
         myOtherFind.Replacement.Text = ReplaceText; 
         myOtherFind.Wrap = word.WdFindWrap.wdFindContinue; 
         myOtherFind.Execute(Replace: word.WdReplace.wdReplaceAll); 
        } 

        // 'Now search all next stories of other stories (doc.storyRanges dont seem to cascades in sub story) 
        word.Range nextStoryRange = otherStoryRange.NextStoryRange; 
        while (nextStoryRange != null) 
        { 
         word.Find myNextStoryFind = nextStoryRange.Find; 
         myNextStoryFind.Text = Findtext; 
         myNextStoryFind.Replacement.Text = ReplaceText; 
         myNextStoryFind.Wrap = word.WdFindWrap.wdFindContinue; 
         myNextStoryFind.Execute(Replace: word.WdReplace.wdReplaceAll); 

         nextStoryRange = nextStoryRange.NextStoryRange; 
        } 

       } 
       app.Documents.Save(); 
       app.Documents.Close(); 
      } 

     } 
    } 
+0

也许这可以帮助你:https://msdn.microsoft.com/en-us/library/ms178792.aspx –

+0

此外,看看这里:http://alemiralles.blogspot.com.es/2013/08/how-to-re-place-text-with-images-on-word.html –

+0

@AdamCalvetBohl谢谢..我得到了解决方案。 –

回答

1

我想你可以尝试这样的事:

var doc = app.Documents.add(path.GetFullPath(@"Docs/yourDoc.docx")), visible: false); 
doc.Activate(); 
String textToReplace = "your text"; 
var selected = app.Selection; 
selected.Text = string.Format("[{0}]", keyword); 
selected.Find.Execute(Replace: WdReplace.wdReplaceNone); 
selected.Range.Select(); 

var imgPath = Path.GetFullPath(string.Format(yourImage)) 
selected.InLineShapes.AddPicture(FileName: imgPath, LinkToFile: false, SaveWithDocument: true); 

doc.SaveAs(path.GetFullPath(@"Docs/yourDoc.docx"));