Сочетание вертикального и горизонтального стола в closedxml.report - PullRequest
0 голосов
/ 06 мая 2019

Я работаю над проектом и использую ClosedXML для документирования некоторых результатов в листе Excel.

У меня следующая структура данных:

Class Diagramm Switch class

Словарь PortTag - это просто пара ключевых значений идентификатора порта и тега («T», «U», «F» или «-»). В результате таблица должна выглядеть следующим образом.:

Table as needed

Это комбинация вертикальной и горизонтальной версий, и я не могу ее создать.

Мой текущийна листе отображается информация, которую я набрал на коммутаторе по протоколу SNMP, и выглядит следующим образом:

current sheet

Можете ли вы мне помочь или направить меня кисточник знаний об этой проблеме?

Я уже прочитал информацию в Github Wiki и на сайте (https://closedxml.github.io/ClosedXML.Report/docs/en/)

большое спасибо!

1 Ответ

1 голос
/ 09 мая 2019

I.Если все Vlan записи имеют одинаковый набор ключей

Вы можете использовать этот подход:

  1. Определить вертикальную таблицу Vlans
  2. Определить горизонтальную таблицуPortTag_Values внутри
  3. Определить еще один горизонтальный стол PortTagKeys, в котором должны быть расположены ключи

enter image description here

В коде добавьте data в качестве одной переменной и PortTagKeys в качестве другой (обратите внимание, что для простоты я пропускаю проверки на нулевой и пустой набор):
var template = new XLTemplate(workbook);
template.AddVariable(data);
template.AddVariable("PortTagKeys", data.Vlans[0].PortTag.Keys);
template.Generate();
Получите то, что вы хотели: enter image description here

II.Если Vlan записи могут иметь разные наборы ключей

В этом случае я бы предложил выполнить предварительную обработку, чтобы получить коллекцию всех ключей и заполнить все PortTag одинаковыми ключами (добавив- за отсутствующие ключи).Сомневаюсь, что это можно сделать в «чистом» ClosedXML.Report, без предварительной обработки.

...