Interop.Word 的斜体内联词

Italic inline word with Interop.Word

我开始学习 C#,主要是为了 MS Word 自动化。使用 Interop.Word,我怎样才能添加一行单词 "one two three",其中两个是斜体?我能得到的最接近的是这样的:

//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();

至于我需要的方法,我尝试了很多方法,但是 none 有效。 MSDN 文档很难阅读并且省略了许多重要的细节。

编辑:我终于成功了,为每个单词创建了一个新的范围对象。这和我想象的一样丑陋,但至少它有效:

        Word.Range rng = word_doc.Range(para.Range.End - 1, para.Range.End);

        rng.Text = "one ";
        Console.WriteLine(rng.Start);
        Console.WriteLine(rng.End);

        rng = word_doc.Range(rng.End - 1, rng.End);
        rng.Text = "two";
        rng.Font.Italic = 1;
        Console.WriteLine(rng.Start);
        Console.WriteLine(rng.End);

        rng = word_doc.Range(rng.End - 1, rng.End);
        rng.Text = " three";
        rng.Font.Italic = 0;
        Console.WriteLine(rng.Start);
        Console.WriteLine(rng.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 收件箱,但我可能要到周一才能回复任何问题。