C# 用C删除图像并在place-Word文件中放置文本#

C# 用C删除图像并在place-Word文件中放置文本#,c#,image,text,replace,ms-word,C#,Image,Text,Replace,Ms Word,我有一个word文件,里面有各种段落和一些图片。我想删除这些图片并在它们的位置上添加一些文字,比如:“这里是图片1”。但我不知道怎么做。我有我的代码的一部分,但文本已发送到最后一页 Int16 imgCount; Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application(); object miss = System.Reflection.Missing.Valu

我有一个word文件,里面有各种段落和一些图片。我想删除这些图片并在它们的位置上添加一些文字,比如:“这里是图片1”。但我不知道怎么做。我有我的代码的一部分,但文本已发送到最后一页

Int16 imgCount;

Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
object miss = System.Reflection.Missing.Value;
object path = @"C:\File.docx";
object readOnly = false;
Microsoft.Office.Interop.Word.Document docs = word.Documents.Open(ref path, ref miss,
    ref readOnly, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss,
    ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);

List<string> lista = new List<string>();


for (int i = 0; i < docs.Paragraphs.Count; i++)
{

    string temp = docs.Paragraphs[i + 1].Range.Text.Trim();
    if (temp != string.Empty)
        lista.Add(temp);


    imgCount = 0;

    foreach (Microsoft.Office.Interop.Word.InlineShape ilshp in docs.InlineShapes)
    {
        ilshp.Application.Selection.MoveEnd();

        if (ilshp.Type == Microsoft.Office.Interop.Word.WdInlineShapeType.wdInlineShapePicture)
        {                        
            imgCount++;
            ilshp.Delete();

            //break;
        }

        Microsoft.Office.Interop.Word.Paragraph prfo = docs.Paragraphs.Add(miss);                    
        docs.Paragraphs[i + 1].Range.Text =  "Here was the image " + i + ".";
    }


}
docs.Close(ref miss, ref miss, ref miss);
Int16 imgCount;
Microsoft.Office.Interop.Word.Application Word=新的Microsoft.Office.Interop.Word.Application();
对象未命中=System.Reflection.Missing.Value;
对象路径=@“C:\File.docx”;
对象只读=false;
Microsoft.Office.Interop.Word.Document文档=Word.Documents.Open(参考路径,参考未命中,
ref只读,ref未命中,ref未命中,ref未命中,ref未命中,ref未命中,ref未命中,
裁判失误、裁判失误、裁判失误、裁判失误、裁判失误、裁判失误、裁判失误、裁判失误、裁判失误);
List lista=新列表();
对于(int i=0;i
这似乎是

但是,要回答这个问题,您需要在当前段落之后添加文本,但您可以直接在刚刚删除的范围之后添加:

int imgCount = 0;

        Application word = new Microsoft.Office.Interop.Word.Application();
        object miss = System.Reflection.Missing.Value;
        object path = @"C:\File.docx";
        object readOnly = false;
        Microsoft.Office.Interop.Word.Document docs = word.Documents.Open(ref path, ref miss, ref readOnly, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);

        List<string> lista = new List<string>();

        for (int i = 0; i < docs.Paragraphs.Count; i++)
        {

            string temp = docs.Paragraphs[i + 1].Range.Text.Trim();
            if (temp != string.Empty)
                lista.Add(temp);

            List<Range> ranges = new List<Range>();
            foreach (Microsoft.Office.Interop.Word.InlineShape ilshp in docs.InlineShapes)
            {
                ilshp.Application.Selection.MoveEnd();

                if (ilshp.Type == Microsoft.Office.Interop.Word.WdInlineShapeType.wdInlineShapePicture)
                {
                    ranges.Add(ilshp.Range);
                    ilshp.Delete();

                    //break;
                }

                Microsoft.Office.Interop.Word.Paragraph prfo = docs.Paragraphs.Add(miss);
            }

            int j = 1;
            foreach (Range imgRange in ranges)
            {
                imgRange.InsertAfter("Here was image " + j++ + ".");
            }

        }

        docs.Close(ref miss, ref miss, ref miss);
int imgCount=0;
Application word=新的Microsoft.Office.Interop.word.Application();
对象未命中=System.Reflection.Missing.Value;
对象路径=@“C:\File.docx”;
对象只读=false;
Microsoft.Office.Interop.Word.Document docs=Word.Documents.Open(参考路径,参考未命中,参考只读,参考未命中,参考未命中,参考未命中,参考未命中,参考未命中,参考未命中,参考未命中,参考未命中,参考未命中,参考未命中,参考未命中,参考未命中,参考未命中,参考未命中);
List lista=新列表();
对于(int i=0;i
这将删除所有图像范围,将每个范围存储在一个列表中,然后可以使用该循环的迭代器跟踪图像编号,并访问InsertAfter

您可以在链接文章中找到一些更详细的解释,但是上面的代码应该可以帮助您解决问题。注意,在添加的列表“ranges”上额外的foreach循环正在进行文本添加。祝你好运