在Excel数据透视表中筛选年,月,日的DateTime字段

我正在使用EPPlus来创buildExcel报告。 现在我试图用DateTime PageField创build一个Pivot,这样用户就可以自己过滤他想看到的时间段。 但是,虽然我可以在相应的数据工作表默认情况下过滤年,月或者天,但我不明白它在Pivot中的工作情况。

这是我有什么:

 Dim wsPivot = excel.Workbook.Worksheets.Add("Pivot") Dim wsData = excel.Workbook.Worksheets.Add("Data") Dim source = workSheet.GetDataSource wsData.Cells("A1").LoadFromDataTable(source, True, OfficeOpenXml.Table.TableStyles.Medium6) For Each col As DataColumn In source.Columns If col.DataType = GetType(Date) Then Dim colNumber = col.Ordinal + 1 Dim range = wsData.Cells(1, colNumber, source.Rows.Count, colNumber) range.Style.Numberformat.Format = "dd.mm.yyyy" End If Next Dim dataRange = wsData.Cells(wsData.Dimension.Address.ToString()) dataRange.AutoFitColumns() Dim pivotTable = wsPivot.PivotTables.Add(wsPivot.Cells("A3"), dataRange, "Open Contacts") pivotTable.PageFields.Add(pivotTable.Fields("OwnedAt")) '** this is the date column i want to group **' pivotTable.PageFields.Add(pivotTable.Fields("Owner")) pivotTable.RowFields.Add(pivotTable.Fields("Country")) pivotTable.ColumnFields.Add(pivotTable.Fields("Status")) pivotTable.DataFields.Add(pivotTable.Fields("Count")) 

只能从列表中selectdate时间值,包括小时和分钟,而不是按月份分组(见下图)。

在这里输入图像描述

这是数据工作表中的filter列表。 如何获得这个在枢轴?

在这里输入图像描述

先谢谢你。

:我也问过这个codeplex没有成功。 也许别人可以帮助,即使他没有EPPlus的经验,但知道与其他图书馆类似的问题。 我可以将date时间值分成每个sql(年,月,日)单独的列。 但是恐怕这个关键点会被这么多的领域弄得更加混乱(我也将不得不分割其他的date领域)。 即使没有经验的编程生成枢轴,什么将经验丰富的用户(我不)推荐?

为什么excel无法在PageField和RowField中通过我的date字段进行分组是因为数据表中有一个未格式化的行。 以下几行导致此问题(请参阅我的问题中的完整代码):

 Dim range = wsData.Cells(1, colNumber, source.Rows.Count, colNumber) range.Style.Numberformat.Format = "dd.mm.yyyy" 

范围的Cells-Method中的参数是:

 1. From-Row 2. From-Column 3. To-Row 4. To-Column 

由于LoadFromDataTable将Colum的名称作为标题加载DataTable,因此最后一行保持未格式化,因此数据透视表不能将date分组。

所以这个修正了它:

 Dim range = wsData.Cells(2, colNumber, source.Rows.Count + 1, colNumber)