Суммарное значение в WordprocessingDocument C # для слова contentControl - PullRequest
0 голосов
/ 13 сентября 2018

Так что кто-то на этом форуме может дать хороший вклад в решение этой простой задачи, я пытаюсь обдумать, что может быть лучшим идеалом для этого. Ниже приведен фрагмент моего кода и он читает входящее сообщение, которое в данном случае представляет собой 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.

Любые предложения о том, как подойти к этому?

1 Ответ

0 голосов
/ 24 сентября 2018

Просто довольно просто, создал 3 списка, которые складывают все значения, а затем суммируют все.

...