2017-03-21 8 views
0

私はテンプレートとして使用している単語文書を持っており、特定のテキストを検索してハイパーリンクに置き換える方法をC#で見つけようとしています。テキストをハイパーリンクに置き換えるMicrosoft Word

[FacebookPage1]はFacebookに置き換えられ、クリックするとfacebookページに移動します。私たちには100回以上のリンクがあり、それを自動化する必要があります。テキストを他のテキストに置き換える方法を見つけましたが、テキストをハイパーリンクに置き換える方法は見つけられませんでした。これは可能ですか?

答えて

0

ここで試してみることができます。テンプレート文書に次のようなコンテンツがあるとします:

ソーシャルメディア:[FacebookPage1] | [TwitterPage1] | [GooglePlusPage1] | [LinkedInPage1]

ハイパーリンクとそれらのプレースホルダーを交換するには、次を使用することができ、その場合には:

output Word document

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

次は、得られた "Output.docx" ファイルであります

上記のコードでは、GemBox.DocumentをDOCXファイルの操作に使用しています。Free and Professional versionsです。

+0

私は非営利のために働いていますが、この時点でライセンスを購入する余裕はありません。ありがとうございますが、無料のオプションを探し続ける必要があります。 – JW12689

関連する問題