Так что кто-то на этом форуме может дать хороший вклад в решение этой простой задачи, я пытаюсь обдумать, что может быть лучшим идеалом для этого.
Ниже приведен фрагмент моего кода и он читает входящее сообщение, которое в данном случае представляет собой XML-код с объявлением, подобным этому
<Key> Avg_exkl_moms </Key>
<Value>123</Value>
<Key> Tjal_exkl_moms </Key>
<Value>321</Value>
<Key> Prov_exkl_moms </Key>
<Value>7375</Value>
<Key> Avg _moms </Key>
<Value>13</Value>
<Key> Tjal _moms </Key>
<Value>31</Value>
<Key> Prov _moms </Key>
<Value>75</Value>
<Key> Avg_ inkl _moms </Key>
<Value>456</Value>
<Key> Tjal_ inkl _moms </Key>
<Value>555</Value>
<Key> Prov_ inkl _moms </Key>
<Value>555</Value>
Word-документ имеет соответствующее contentControlTagName, поэтому Avg_inkl_moms будет заполняться значением поля, равным 7375.
Ниже приведен извлеченный код, который заполняет документ.
private static void FillContentControls(Dictionary<string, string> parameters, MemoryStream stream)
{
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(stream, true))
{
foreach (KeyValuePair<string, string> parameter in parameters)
{
string contentControlTagName = parameter.Key;
string newValue = parameter.Value;
IEnumerable<XElement> contentControls = wordDoc.MainDocumentPart.GetXDocument().Descendants(sdt)
.Elements(sdtContent)
.Descendants(wordText)
.Where(e => ((string)e.Ancestors(sdt)
.Elements(sdtPr)
.Elements(tag)
.Attributes(tagVal).First().Value == contentControlTagName));
int i = 0;
foreach (XElement element in contentControls)
{
element.Value = (i == 0 ? newValue : String.Empty);
i++;
}
Теперь я хотел бы суммировать различные значения
Avg_exkl_moms + Tjal_exkl_moms + Prov_exkl_moms = total_exlk_moms
Avg_moms + Tjal_moms + Prov_moms = total_moms
Avg_inkl_moms + Tjal_ inkl _moms + Prov_ inkl _moms = total_ inkl _moms
И затем поместите их в соответствующее contentControlTagName.
Любые предложения о том, как подойти к этому?