Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何迭代每个单词,ms word?_C#_Loops_Ms Word_Edit - Fatal编程技术网

C# 如何迭代每个单词,ms word?

C# 如何迭代每个单词,ms word?,c#,loops,ms-word,edit,C#,Loops,Ms Word,Edit,好的,我的主要目的是检查每个单词是否有下划线。 如果是,我想将字体大小更改为int x 我试着像这样简单地浏览每个角色 编辑:更新代码 private void button1_Click(object sender, EventArgs e) { word.Application page = new word.Application(); page.Visible = true; word.Document doc = null;

好的,我的主要目的是检查每个单词是否有下划线。 如果是,我想将字体大小更改为int x

我试着像这样简单地浏览每个角色 编辑:更新代码

   private void button1_Click(object sender, EventArgs e)
    {
        word.Application page = new word.Application();
        page.Visible = true;
        word.Document doc = null;
        foreach (string fi in listBox1.Items)
        {
            doc = page.Documents.Open(Application.StartupPath + "\\old\\" + fi);
            if (doc != null)
            {
                int start = 0;
                foreach (string text in doc.Range().Text.Split(" \r\n\t.".ToCharArray()))
                {
                    int x = doc.Range().Text.IndexOf(text, start);
                    if (doc.Range(x, text.Length - 1).Underline == word.WdUnderline.wdUnderlineSingle)
                        doc.Range(x, text.Length - 1).Font = new word.Font() { Name = "Times New Roman", Bold = 4, Size = 12 };
                    else
                        doc.Range(x, text.Length - 1).Font = new word.Font() { Name = "Times New Roman", Size = 8 };
                    start = x+text.Length;
                }
            }
        }
        //doc.Save();
        // doc.Close();
        // page.Quit();
    }
但是,我得到了这个错误

呼叫被被叫方拒绝。(HRESULT的异常:0x80010001 (RPC_E_呼叫被拒绝))

我不知道为什么它会给出这样的答案

             doc = page.Documents.Open(Application.StartupPath + "\\old\\" + fi);
            if (doc != null)
            {
                for (int x = 1; x <= doc.Words.Count - 1; x++)
                {
                        if (doc.Words[x].Underline != word.WdUnderline.wdUnderlineNone && doc.Words[x].Underline != word.WdUnderline.wdUnderlineDouble)
                            doc.Words[x].Font = new word.Font() { Name = "Times New Roman", Bold = 4, Size = 12 };
                        else
                            doc.Words[x].Font = new word.Font() { Name = "Times New Roman", Size = 8 };
                }
doc=page.Documents.Open(Application.StartupPath+“\\old\\\”+fi);
如果(doc!=null)
{

对于(int x=1;x,您的代码可以在以下方面得到极大改进:

doc = page.Documents.Open(System.IO.Path.Combine(Application.StartupPath, "old", fi));
if (doc != null)
{
     word.Font RegularFont = new word.Font() { Name = "Times New Roman", Size = 12 };
     word.Font BigFont = new word.Font() { Name = "Times New Roman", Size = 8 };

     for (int x = 1; x <= doc.Words.Count; x++)
     {
          if (doc.Words[x].Underline != word.WdUnderline.wdUnderlineNone && doc.Words[x].Underline != word.WdUnderline.wdUnderlineDouble)
               doc.Words[x].Font = RegularFont;
           else
                doc.Words[x].Font = BigFont;
      }
}
doc=page.Documents.Open(System.IO.Path.Combine(Application.StartupPath,“old”,fi));
如果(doc!=null)
{
word.Font RegularFont=newword.Font(){Name=“Times new Roman”,Size=12};
word.Font BigFont=新单词.Font(){Name=“Times new Roman”,Size=8};

对于(int x=1;x无法复制您的条件;但此链接可能会有所帮助:我感谢您的帮助,但我现在已经非常接近我的答案。它会循环遍历单词,但我目前正在一个28页的文档中测试它,因此需要时间才能看到结果。很高兴阅读此链接。如果您更了解确切的专业知识,请参阅问题/解决方案,相应地更新你的问题(甚至可能想写下你自己的答案)。如果只是与没有正确地遍历范围有关(与Word自动化没有严格的关系)你可以直接删除这个问题。弹出式弹出式显示的是什么?是哪一行引起的?BTW,你真的应该考虑在循环外创建字体对象。它只是说我需要激活MS Word,但是我找到了一个解决办法。我用一个for循环和一个尝试{}}catch {}包围它。循环给这个人一些时间退出弹出窗口。是的,我的答案有点过时;我改为使用word.Font[]数组。