查找特定文本并替换为MS Word中的图像文件 [英] Find specific text and replace with Image file in MS Word

查看:179
本文介绍了查找特定文本并替换为MS Word中的图像文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

MS word文件如下所示

MS word file shown like below

#A ## B ## C ## D ## E#

#A# #B# #C# #D# #E#

I已实现以下代码,以使用C#替换MS word文件中的文本。

I have implemented below code to replace text in MS word file using C#.

public void ReplaceWordDoc()
    {
        object missing = Missing.Value;
        Document doc = Globals.ThisAddIn.Application.ActiveDocument;

        List<ReplacerSearch> search = GetSearchList();

        foreach (var searchItem in search)
        {
            foreach (Range tmpRange in ((Document)doc).StoryRanges)
            {
                tmpRange.Find.ClearFormatting();
                tmpRange.Find.Text = searchItem.Find;
                tmpRange.Find.Replacement.ClearFormatting();
                tmpRange.Find.Replacement.Text = searchItem.Replace;
                object replaceAll = WdReplace.wdReplaceAll;

                if (searchItem.Replace.Contains("gif"))
                {
                    tmpRange.InlineShapes.AddPicture(searchItem.Replace, Type.Missing, Type.Missing, tmpRange);
                }
                else
                {
                    tmpRange.Find.Execute(ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                                          ref missing, ref missing, ref missing, ref replaceAll, ref missing, ref missing, ref missing, ref missing);
                }
            }
        }
    }

    private List<ReplacerSearch> GetSearchList()
        {
            List<ReplacerSearch> ilst = new List<ReplacerSearch>();
            for (int i = 0; i <= 4; i++)
            {
                ReplacerSearch ObjReplacerSearch = new ReplacerSearch();
                if (i == 0)
                {
                    ObjReplacerSearch.Find = "#A#";
                    ObjReplacerSearch.Replace = "ABCD";
                }
                else if (i == 1)
                {
                    ObjReplacerSearch.Find = "#B#";
                    ObjReplacerSearch.Replace = "EFGH";
                }
                else if (i == 2)
                {
                    ObjReplacerSearch.Find = "#C#";
                    ObjReplacerSearch.Replace = "IJKL";
                }
                else if (i == 3)
                {
                    ObjReplacerSearch.Find = "#D#";
                    ObjReplacerSearch.Replace = "MVC Developer";
                }
                else if (i == 4)
                {
                    ObjReplacerSearch.Find = "#E#";
                    ObjReplacerSearch.Replace = "D:\\ajax_loader.gif";
                }

                ilst.Add(ObjReplacerSearch);
            }
            return ilst;
        }

我的MS字输出就像是,

My MS word out put is like,

[图片] #ABCD ## EFGH ## IJKL #MVC开发者##E#

[Image] #ABCD# #EFGH# #IJKL# #MVC Developer# #E#

我需要#E#的地方图片开始。

I need image at place of #E# not on the start.

推荐答案

我得到了我的解决方案。

I got my solution.

public void ReplaceWordDoc()
        {
            object missing = Missing.Value;
            Document doc = Globals.ThisAddIn.Application.ActiveDocument;

            List<ReplacerSearch> search = GetSearchList();

            foreach (var searchItem in search)
            {
                foreach (Range tmpRange in ((Document)doc).StoryRanges)
                {
                    tmpRange.Find.ClearFormatting();
                    tmpRange.Find.Text = searchItem.Find;
                    tmpRange.Find.Replacement.ClearFormatting();
                    tmpRange.Find.Replacement.Text = searchItem.Replace;
                    if (searchItem.Replace.Contains("gif"))
                    {
                        tmpRange.Find.Replacement.Text = "";
                        Object end = doc.Characters.Count;
                        Range tmpRange1 = doc.Range(0, ref end);
                        Find fnd = tmpRange1.Find;
                        fnd.ClearFormatting();
                        fnd.Text = searchItem.Find;
                        fnd.Execute(ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                                    ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);

                        tmpRange1.InlineShapes.AddPicture(searchItem.Replace, Type.Missing, Type.Missing, Type.Missing);
                    }
                    tmpRange.Find.Execute(ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                                  ref missing, ref missing, ref missing, WdReplace.wdReplaceAll, ref missing, ref missing, ref missing, ref missing);
                }
            }
            doc.Close(ref missing, ref missing, ref missing);
        }





        private List<ReplacerSearch> GetSearchList()
        {
            List<ReplacerSearch> ilst = new List<ReplacerSearch>();
            for (int i = 0; i <= 4; i++)
            {
                ReplacerSearch ObjReplacerSearch = new ReplacerSearch();
                if (i == 0)
                {
                    ObjReplacerSearch.Find = "#A#";
                    ObjReplacerSearch.Replace = "ABCD";
                }
                else if (i == 1)
                {
                    ObjReplacerSearch.Find = "#B#";
                    ObjReplacerSearch.Replace = "EFGH";
                }
                else if (i == 2)
                {
                    ObjReplacerSearch.Find = "#C#";
                    ObjReplacerSearch.Replace = "IJKL";
                }
                else if (i == 3)
                {
                    ObjReplacerSearch.Find = "#D#";
                    ObjReplacerSearch.Replace = "Developer";
                }
                else if (i == 4)
                {
                    ObjReplacerSearch.Find = "#E#";
                    ObjReplacerSearch.Replace = "D:\\ajax_loader.gif";
                }

                ilst.Add(ObjReplacerSearch);
            }
            return ilst;
        }

这篇关于查找特定文本并替换为MS Word中的图像文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆