使用单词Interop为段落添加超链接

时间:2015-04-27 17:18:38

标签: c# office-interop

我试图添加一个超链接到一些XML 插入Word文档的字段(使用Microsoft.Office.Interop.Word)。

正在插入的XML包含多个段落,每个段落都包含一些应转换为超链接的文本。包含超链接的文本是在"可用于"之后的段落末尾提取的。找到了子串。

以下代码可以创建超链接,但第一个超链接始终应用于所有段落。我期待代码为每个被迭代的段落创建一个超链接。

我的猜测是,paragraph.Range对象指向的文本实际上是插入的整个XML而不是段落中包含的文本。我还确认paragraph.Range.Text属性为每个段落返回正确的文本,因此我对Range属性的预期完全感到困惑。

有什么想法吗?提前谢谢。

if (!string.IsNullOrWhiteSpace(bibliography))
{
    const string linkToken = "Available at ";

    field.Result.InsertXML(bibliography);

    foreach (Paragraph paragraph in field.Result.Paragraphs)
    {   
        var paragraphText = paragraph.Range.Text;

        var indexOfLink = paragraphText.IndexOf(linkToken, StringComparison.OrdinalIgnoreCase);

        if (indexOfLink >= 0)
        {
            var linkStart = indexOfLink + linkToken.Length;
            var linkPart = paragraphText.Substring(linkStart);

            Uri uriFound;

            if (Uri.TryCreate(linkPart, UriKind.Absolute, out uriFound))
            {
                object linkAddress = uriFound.ToString();

                paragraph.Range.Hyperlinks.Add(paragraph.Range, ref linkAddress);
            }
        }
    }
}

0 个答案:

没有答案