none
关于C#应用WORD中的光标定位问题。 RRS feed

  • 问题

  • object restr; object restr1; for (int j = 1; j < imgyaogJC.Length; j++) { restr1 = "${赤潮遥感监测结果图}"; restr = "${赤潮遥感监测结果图" + j.ToString() + "}"; this._Doc.Application.Selection.Find.ClearFormatting(); if (this._Doc.Application.Selection.Find.Execute(ref restr1, 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)) { range.Text = restr.ToString(); } } //这段代码是在word模板中查找到"${赤潮遥感监测结果图}" ,并将光标定位在此字符串之后,然后插入

    //("${赤潮遥感监测结果图" + j.ToString() + "}"),但实际中插入的位置为下图所示:

    然后换掉要查找的字符串,结果还是这样,难道跟“range.Text = restr.ToString();”有关系么?

    大神路过请帮帮解答下,先行谢过。

    还有就是为什么我在这里放了个帖子N多天都没人解答下,不过我自己换了个比较麻烦的方法。
    这里说明下,万一有同志跟我一样遇到同样的问题就可以解决了。
    当时碰到的情况,向WORD插入TIF图像,结果是去响应,估计是在解码的时候因为头文件的关系陷入死循环,
    所以,在插入图像之前先将图像转成JPG或者PNG,然后再插入。考虑到生成报告文档时插入的图片并不会用
    来分析,所以不用考虑保留头文件。

    2012年9月18日 8:22

答案

  • 你好 Tony,

    感谢你对MSDN论坛的支持 。

    请看下下面的图是不是你想达成的效果。

    如果我的理解没错的话,那下面的这段代码应该能帮上忙。这是一个console application.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Word = Microsoft.Office.Interop.Word;
    
    namespace ConsoleApplication3
    {
        class Program
        {
            static void Main(string[] args)
            {
                string fName = @"D:\Sample.docx";
                Word._Application wdApp = new Word.Application();
                wdApp.Visible = true;
                Word.Document wdDoc = wdApp.Documents.Open(fName);
    
                int imgCount = 3;
                object restr;
                object restr1;
                //object missing = Type.Missing;
    
                for (int j = 1; j <= imgCount; j++)
                {
                    restr1 = "${赤潮遥感监测结果图}";
                    restr = "${赤潮遥感监测结果图" + j.ToString() + "}";
                    wdApp.Selection.Find.ClearFormatting();
                    if (wdApp.Selection.Find.Execute(ref restr1))
                    {
                        //应该是你选中的这个Range。
                        wdApp.Selection.Range.Text = restr.ToString();
                    }
                }
    
            }
        }
    }
    

    代码编译的结果就是上面图上看到的那个样子。希望能有帮助。

    之前看到你有一个帖子被移动到了Word for developers论坛,还没有来得及做回复就已经被删了,实在不好意思。帖子发上来之后3个工作日内一定会有答复的,还请你耐心的等待。如果还有Office 相关的问题可以直接发到 Microsoft Office for Developers 论坛下相应的板块,不过帖子的问题描述需要用英语给出。

    谢谢你的理解与支持。

    Best Regards,
    Quist

    Quist Zhang [MSFT]
    MSDN Community Support | Feedback to us

    2012年9月19日 6:02

全部回复

  • 你好 Tony,

    感谢你对MSDN论坛的支持 。

    请看下下面的图是不是你想达成的效果。

    如果我的理解没错的话,那下面的这段代码应该能帮上忙。这是一个console application.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Word = Microsoft.Office.Interop.Word;
    
    namespace ConsoleApplication3
    {
        class Program
        {
            static void Main(string[] args)
            {
                string fName = @"D:\Sample.docx";
                Word._Application wdApp = new Word.Application();
                wdApp.Visible = true;
                Word.Document wdDoc = wdApp.Documents.Open(fName);
    
                int imgCount = 3;
                object restr;
                object restr1;
                //object missing = Type.Missing;
    
                for (int j = 1; j <= imgCount; j++)
                {
                    restr1 = "${赤潮遥感监测结果图}";
                    restr = "${赤潮遥感监测结果图" + j.ToString() + "}";
                    wdApp.Selection.Find.ClearFormatting();
                    if (wdApp.Selection.Find.Execute(ref restr1))
                    {
                        //应该是你选中的这个Range。
                        wdApp.Selection.Range.Text = restr.ToString();
                    }
                }
    
            }
        }
    }
    

    代码编译的结果就是上面图上看到的那个样子。希望能有帮助。

    之前看到你有一个帖子被移动到了Word for developers论坛,还没有来得及做回复就已经被删了,实在不好意思。帖子发上来之后3个工作日内一定会有答复的,还请你耐心的等待。如果还有Office 相关的问题可以直接发到 Microsoft Office for Developers 论坛下相应的板块,不过帖子的问题描述需要用英语给出。

    谢谢你的理解与支持。

    Best Regards,
    Quist

    Quist Zhang [MSFT]
    MSDN Community Support | Feedback to us

    2012年9月19日 6:02
  • 你好 Tony,

    我在你另外的帖子下做了回复。还需要你再提供一些信息,谢谢。

    Best regards,
    Quist



    Quist Zhang [MSFT]
    MSDN Community Support | Feedback to us

    2012年9月19日 8:34
  • 两次谢谢你,Quist,这个问题我也自己解决了。。。。。。。。我想了个比较拐弯抹角的办法

    就是将  ${}通过循环,根据 string[] imgyaogJC的长度决定“${}”的个数

    再次感谢,我还有个问题贴是关于摄像头的,求帮忙看看

    2012年10月19日 7:21
  • Hi Tony,

    很高兴你的问题解决了。

    由于我负责的是涉及Office 开发方面的问题,对于你最新的问题 C#调用USB摄像头总是跳出选择摄像头 方面的知识了解甚少。所以无法给出答复。相信下一个工作日会有负责这方面的同事给出答复的。

    感谢你的理解和支持。

    Best regards,


    Quist Zhang [MSFT]
    MSDN Community Support | Feedback to us

    2012年10月19日 8:38