2017-03-21 7 views
0

Ich habe ein Word-Dokument, das wir als Vorlage verwenden und versuche, einen Weg in C# zu finden, nach bestimmten Text zu suchen und es durch einen Hyperlink zu ersetzen. zum Beispiel:Ersetzen von Text durch Hyperlink Microsoft Word

[FacebookPage1] würde durch Facebook ersetzt werden und wenn sie geklickt werden, würde sie auf die Facebook-Seite bringen. Wir haben über 100 verschiedene Links zum Durchlaufen und Ersetzen, also muss ich es automatisieren. Ich habe Wege gefunden, Text durch anderen Text zu ersetzen, habe aber keine Möglichkeit gefunden, Text durch einen Hyperlink zu ersetzen. Ist das möglich?

Antwort

0

Hier ist etwas, was Sie ausprobieren können. Angenommen, Sie haben in Ihrem Vorlagendokument folgenden Inhalt:

Social Media: [FacebookPage1] | [TwitterPage1] | [GooglePlusPage1] | [LinkedInPage1]

In diesem Fall können Sie diese Platzhalter durch Hyperlinks ersetzen die folgenden Zwecke verwenden:

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

die resultierende "Output.docx" Hier finden Sie Datei:

output Word document

Beachten Sie, dass der obige Code GemBox.Document für die Manipulation mit DOCX-Datei verwendet, hat es eine Free and Professional versions.

+0

Das funktioniert gut, mit der Ausnahme von ich arbeite für eine Non-Profit, so dass wir die Lizenzierung zu diesem Zeitpunkt nicht leisten können. Danke, aber ich werde weiterhin nach freien Optionen suchen müssen. – JW12689

Verwandte Themen