C# 带互操作的斜体内联word.word

C# 带互操作的斜体内联word.word,c#,office-interop,C#,Office Interop,我开始学习C#,主要是为了MS Word自动化。使用Interop.Word,我如何添加一行字“一二三”,其中两个字是斜体字?我能得到的最接近的东西是这样的: //text with some italic words. para.Range.Text = "one "; Console.WriteLine(para.Range.Start); Console.WriteLine(para.Range.End); // <some magic methods that end the l

我开始学习C#,主要是为了MS Word自动化。使用Interop.Word,我如何添加一行字“一二三”,其中两个字是斜体字?我能得到的最接近的东西是这样的:

//text with some italic words.
para.Range.Text = "one ";
Console.WriteLine(para.Range.Start);
Console.WriteLine(para.Range.End);

// <some magic methods that end the last range and start a new one in place>

para.Range.Text = "two";
para.Range.Font.Italic = 1;
Console.WriteLine(para.Range.Start);
Console.WriteLine(para.Range.End);

// <some magic methods that end the last range and start a new one in place>

para.Range.Text = " three";
Console.WriteLine(para.Range.Start);
Console.WriteLine(para.Range.End);
para.Range.InsertParagraphAfter();

这是我能得到的最接近的结果,我为您编写的代码的主要问题是,它没有内联添加文本,而是为找到的每个单词添加一行新行。希望这段代码能为您提供一些关于如何以最佳编程方式创建word文档的想法

Document extendedDocument = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument);

Word.Selection currentSelection = Globals.ThisAddIn.Application.Selection;

Word.Paragraph para;
para = extendedDocument.Content.Paragraphs.Add(ref oMissing);
para.Range.SetRange(currentSelection.Range.Start, currentSelection.Range.End);

string string1 = "one two three";
string split1 = " ";
string match1 = "two";

string[] elements = Regex.Split(string1, split1);

foreach (var m in elements)
{
    if (m.Equals(match1))
    {
        para.Range.Text = m + " ";
        para.Range.Font.Italic = 1;
    }
    else 
    {
        para.Range.Text = m + " ";
        para.Range.Font.Italic = 0;
    }

    para.Range.InsertParagraphAfter();
}

编辑:周末愉快!我会在周末检查我的SO收件箱,但我可能要到周一才能回复任何问题

嗯,
para.Range.Font.Italic=1应该这样做,但是你怎么知道它起作用了呢?使用
控制台登录。WriteLine
不会将文本显示为斜体。。。你知道吗?不清楚问题出在哪里。除了与
Word
无关的
Console.WriteLine部分之外,您的代码似乎很好。Console.WriteLine用于简单的日志记录;而且上面的代码没有按预期工作,只输出了“三”。“一”和“二”被覆盖。
Document extendedDocument = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument);

Word.Selection currentSelection = Globals.ThisAddIn.Application.Selection;

Word.Paragraph para;
para = extendedDocument.Content.Paragraphs.Add(ref oMissing);
para.Range.SetRange(currentSelection.Range.Start, currentSelection.Range.End);

string string1 = "one two three";
string split1 = " ";
string match1 = "two";

string[] elements = Regex.Split(string1, split1);

foreach (var m in elements)
{
    if (m.Equals(match1))
    {
        para.Range.Text = m + " ";
        para.Range.Font.Italic = 1;
    }
    else 
    {
        para.Range.Text = m + " ";
        para.Range.Font.Italic = 0;
    }

    para.Range.InsertParagraphAfter();
}