用超链接微软词替换文本

时间:2017-03-21 19:58:06

标签: c# replace ms-word

我有一个word文档,我们正在使用它作为模板,我试图在C#中找到一种方法来搜索特定文本并用超链接替换它。例如:

[FacebookPage1]将被Facebook取代,点击后会将其带到Facebook页面。我们有超过100个不同的链接循环和替换所以我需要自动化它。我找到了用其他文本替换文本但没有找到用超链接替换文本的方法。这可能吗?

1 个答案:

答案 0 :(得分:0)

这是你可以尝试的东西。我们假设您的模板文档中包含以下内容:

  

社交媒体:[FacebookPage1] | [TwitterPage1] | [GooglePlusPage1] | [LinkedInPage1]

在这种情况下,您可以使用以下内容将这些占位符替换为超链接:

// Create collection of "placeholder -> link" pairs.
var linkData = new Dictionary<string, string>()
{
    ["FacebookPage1"] = "https://www.facebook.com",
    ["TwitterPage1"] = "https://twitter.com",
    ["GooglePlusPage1"] = "https://plus.google.com",
    ["LinkedInPage1"] = "https://www.linkedin.com"
};

// Create placeholder regex, the pattern for texts between square brackets.
Regex placeholderRegex = new Regex(@"\[(.*?)\]", RegexOptions.Compiled);

// Load template document.
DocumentModel document = DocumentModel.Load("Template.docx");

// Search for placeholders in the document.
foreach (ContentRange placeholder in document.Content.Find(placeholderRegex).Reverse())
{
    string name = placeholder.ToString().Trim('[', ']');
    string link;

    // Replace placeholder with Hyperlink element.
    if (linkData.TryGetValue(name, out link))
        placeholder.Set(new Hyperlink(document, link, name).Content);
}

// Save document.
document.Save("Output.docx");

以下是结果&#34; Output.docx&#34;文件:

output Word document

请注意,上面的代码使用GemBox.Document来操作DOCX文件,它有一个Free and Professional versions