C# 在数据透视表上配置其他数据透视列标题

C# 在数据透视表上配置其他数据透视列标题,c#,nreco,C#,Nreco,我正在使用NReco数据透视库以日期字段为轴心,以便日期水平显示在标题中。这很好,但是,我想添加日期来填补空白,以便结果更完整(默认情况下,库只显示记录中包含的日期) 例如,如果我总共有2条记录,第一条记录在2018年1月1日,第二条记录在2018年1月10日,那么我不会为这两条记录之间的所有日期设置列 我用空值为我的范围内的每个日期添加记录,但这会在结果顶部添加一个空行,这并不理想 总之,我想为我的日期维度添加“虚拟”值,以便通过显示没有任何条目的日期列来获得更完整的结果集 代码 using

我正在使用NReco数据透视库以日期字段为轴心,以便日期水平显示在标题中。这很好,但是,我想添加日期来填补空白,以便结果更完整(默认情况下,库只显示记录中包含的日期)

例如,如果我总共有2条记录,第一条记录在2018年1月1日,第二条记录在2018年1月10日,那么我不会为这两条记录之间的所有日期设置列

我用空值为我的范围内的每个日期添加记录,但这会在结果顶部添加一个空行,这并不理想

总之,我想为我的日期维度添加“虚拟”值,以便通过显示没有任何条目的日期列来获得更完整的结果集

代码

using (var package = new ExcelPackage())
{
    var dimensionNames = new string[] { "Id", "Name", "Date", "Hours" };
    var aggregator = new SumAggregatorFactory("Hours");
    var rows = new Dictionary<string, object>()
    {
        { 1, "John Smith", new DateTime(2018, 1, 1), 5 },
        { 2, "John Doe", new DateTime(2018, 1, 10), 10 }
    };
    var pivotData = new PivotData(dimensionNames, aggregator, rows);
    var pivotTable = new PivotTable(new string[] { "Name" }, new string[] { "Date" }, pivotData);

    var worksheet = package.Workbook.Worksheets.Add("Report");
    var tableWriter = new PivotTableExcelWriter(worksheet);
    tableWriter.Write(pivotTable);
    package.SaveAs(...);
}
使用(var package=new ExcelPackage())
{
var dimensionNames=新字符串[]{“Id”、“Name”、“Date”、“Hours”};
var聚合器=新SumAggregatorFactory(“小时”);
var rows=新字典()
{
{1,“约翰·史密斯”,新日期时间(2018年1月1日),5},
{2,“John Doe”,新日期时间(2018年1月10日),10}
};
var pivotData=新的数据透视(维度名称、聚合器、行);
var数据透视表=新数据透视表(新字符串[]{“名称”},新字符串[]{“日期”},数据透视);
var工作表=package.Workbook.Worksheets.Add(“报告”);
var tableWriter=新的数据透视表excelwriter(工作表);
tableWriter.Write(数据透视表);
SaveAs(…);
}

默认情况下,
数据透视数据
类为不存在的维度键创建新的数据点使用indexer访问该数据点时,您可以使用该数据点创建“空”日期:

for (int i=1; i<=10; i++) {
  // if aggregator for specified keys doesn't exist, it will be added
  var aggr = pivotData[1, "John Smith", new Date(2018, 1, i), 5];
}
for(int i=1;i