首页 > 解决方案 > closedxml.report中的纵横表组合

问题描述

我正在做一个项目,我正在使用 ClosedXML 在 Excel 工作表中记录一些结果。

我有以下数据结构:

类 Diagramm Switch 类

PortTag Dictionary 只是 Port Id 和 Tag 的键值对(“T”、“U”、“F”或“-”)这应该产生一个如下所示的表:

表根据需要

这是垂直和水平版本的组合,我无法创建它。

我当前的工作表显示了我使用 SNMP 从交换机轮询的信息,如下所示:

当前工作表

您可以为我提供任何帮助或指导我找到有关此问题的知识来源吗?

我已经阅读了 Github Wiki 和网站上的信息 ( https://closedxml.github.io/ClosedXML.Report/docs/en/ )

非常感谢 !

标签: c#excelclosedxml

解决方案


I. 如果所有Vlan条目都具有相同的键集

您可以使用这种方法:

  1. 定义垂直表Vlans
  2. PortTag_Values在里面定义一个水平表
  3. 定义另一个PortTagKeys应该放置键的水平表

在此处输入图像描述

  1. 在代码中,添加data一个变量和PortTagKeys另一个变量(请注意,为简单起见,我省略了对 null 和空集合的检查):
var template = new XLTemplate(workbook);
template.AddVariable(data);
template.AddVariable("PortTagKeys", data.Vlans[0].PortTag.Keys);
template.Generate();
  1. 得到你想要的: 在此处输入图像描述

二、如果Vlan条目可能有不同的键集

在这种情况下,我建议执行预处理以获取所有键的集合并PortTag用相同的键填充所有 s(放置-丢失的键)。我怀疑是否有可能在“纯” ClosedXML.Report 中进行,无需预处理。


推荐阅读