Hi
Thanks for
your interest in Aspose.Words. I think that you can achieve this using regular expressions
and ReplaceEvaluator. For example see the following code and attached
documents.
//Collection of Key Value pairs
Hashtable keyValueCollection = new Hashtable();
public void TestInsertValues()
{
//Open source document
Document srcDoc = new
Document(@"468_110179_vidhya.thawale\in.doc");
//Create regecx for searching values in document
Regex regexFindValue = new
Regex(@"<(?\S+):(?.*?)>");
//Find values
srcDoc.Range.Replace(regexFindValue, new
ReplaceEvaluator(ReplaceActionFindValues), true);
//Open destination document
Document tempDoc = new
Document(@"468_110179_vidhya.thawale\temp.doc");
//Create regex for searching placeholders
Regex regexFindPlaceholder = new Regex(@"<%(?\S+)%>");
//Replace placeholder with value
tempDoc.Range.Replace(regexFindPlaceholder, new
ReplaceEvaluator(ReplaceActionFindPlaceholder),
true);
//Save output
tempDoc.Save(@"468_110179_vidhya.thawale\out.doc");
}
ReplaceAction ReplaceActionFindValues(object
sender, ReplaceEvaluatorArgs e)
{
//Add pair to collection
keyValueCollection.Add(e.Match.Groups["name"].Value,
e.Match.Groups["value"].Value);
return ReplaceAction.Skip;
}
ReplaceAction ReplaceActionFindPlaceholder(object
sender, ReplaceEvaluatorArgs e)
{
if (keyValueCollection.ContainsKey(e.Match.Groups["name"].Value))
{
//Replace placeholder with value
e.Replacement = keyValueCollection[e.Match.Groups["name"].Value].ToString();
return ReplaceAction.Replace;
}
else
{
return ReplaceAction.Skip;
}
}
I hope that
this will help you.
Best
regards.