带页面字段的数据透视表必须位于第3行上方。当前位置为A1

问题描述:

遇到EPPlus问题。带页面字段的数据透视表必须位于第3行上方。当前位置为A1

想要基于第一个pivottable的数据(使用CacheDefinition.SourceRange完成)准备第二个pivottable,并且不能添加过滤器(PageField)。 当我运行这是这段代码的最后一行休息与错误:“一个数据透视表与页面字段必须位于第3行。Currenct位置是A1”... 不知道这里有什么问题。

CODE:

var reportFilterNames = new List<string>() { "ProjectName" }; 
var valueNames = new List<string>() { "Value1", "Value2", "Value3" }; 

ExcelWorksheet wsChart = report.Workbook.Worksheets.Add("Chart-Projects"); 
var dataRange = pivotTableProjects.CacheDefinition.SourceRange; 
ExcelPivotTable pivotTable = wsChart.PivotTables.Add(wsChart.Cells[1, 1], dataRange, "PivotTableChart"); 

pivotTable.MultipleFieldFilters = true; 
pivotTable.RowGrandTotals = true; 
pivotTable.ColumGrandTotals = true; 
pivotTable.Compact = true; 
pivotTable.CompactData = true; 
pivotTable.GridDropZones = false; 
pivotTable.Outline = false; 
pivotTable.OutlineData = false; 
pivotTable.ShowError = true; 
pivotTable.ErrorCaption = "[ERROR]"; 
pivotTable.ShowHeaders = true; 
pivotTable.UseAutoFormatting = true; 
pivotTable.ApplyWidthHeightFormats = true; 
pivotTable.ShowDrill = true; 
//pivotTable.FirstDataCol = 2; 
pivotTable.RowHeaderCaption = "Projects"; 

pivotTable.Indent = 0; 
pivotTable.DataOnRows = true; 

foreach (string reportFilterName in reportFilterNames) 
    pivotTable.PageFields.Add(pivotTable.Fields[reportFilterName]); 

任何建议?

+0

如果它可以帮助某人调查此问题,则此例外来源为:[EPPlus/EPPlus/Table/PivotTable/ExcelPivotTableFieldCollection.cs](https://github.com/pruiz/EPPlus/blob/0d53d2f885857f6cdf52ef940baae1024e4b301b/ EPPlus/Table/PivotTable/ExcelPivotTableFieldCollection.cs#L207) –

+0

但如预期的那样,“A1”在第3行之上......不是吗?所以... – SiL3NC3

+0

我没有经验EPPlus,但作为我的基本眼睛通知,触发异常的条件是'if(_table.Address._fromRow

对于所有民俗,我想通了! 问题是,有没有空间添加过滤器选择......

当我调整了该行:

ExcelPivotTable pivotTable = wsChart.PivotTables.Add(wsChart.Cells[1, 1], dataRange, "PivotTableChart"); 

要的是:

ExcelPivotTable pivotTable = wsChart.PivotTables.Add(wsChart.Cells[3, 1], dataRange, "PivotTableChart"); 

这会给之前更多的空间枢轴表,然后,错误消失了。 所以要注意添加更高的起始行,如果你想添加多个过滤器。

希望它可以帮助某人在将来看到这篇文章。