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

时间:2017-10-16 09:34:43

标签: c# pivot-table epplus

EPPlus遇到了问题。

想要根据第一个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]);

有任何建议吗?

1 个答案:

答案 0 :(得分:0)

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

当我调整那条线时:

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

对此:

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

这将在pivottable之前提供更多空间,然后错误就消失了。 因此,如果要添加多个过滤器,请注意添加更高的起始行。

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