2017-10-16 9 views
0

Vous avez eu un problème avec EPPlus.Un tableau croisé dynamique avec des champs de page doit être situé au-dessus de la ligne 3. L'emplacement actuel est A1

Vous voulez préparer un second pivot sur la base des données de la première pivotante (à l'aide de CacheDefinition.SourceRange) et ne pouvez pas ajouter de filtre (PageField). Quand je lance ce sont des pauses sur la dernière ligne de ce code avec l'erreur: "Un tableau croisé dynamique avec des champs de page doit être situé au-dessus de la ligne 3. La localisation est A1" Ne sait pas ce qui ne va pas ici.

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]); 

Tout conseil?

+0

Si cela aide quelqu'un à se pencher sur le problème, voici la source de cette exception: [EPPlus/EPPlus/Table/PivotTable/ExcelPivotTableFieldCollection.cs] (https://github.com/pruiz/EPPlus/blob/0d53d2f885857f6cdf52ef940baae1024e4b301b/ EPPlus/Table/Tableau croisé dynamique/ExcelPivotTableFieldCollection.cs # L207) –

+0

Mais comme prévu "A1" est au-dessus de la ligne 3 ... n'est-ce pas? Donc ... – SiL3NC3

+0

Je ne suis pas expérimenté en EPPlus, mais comme mes avis de base, la condition déclenchant l'exception est 'if (_table.Address._fromRow <3)', c'est assez déroutant puisque le message d'exception n'est pas clair cependant. –

Répondre

0

Pour tous les folkz, je l'ai compris! problème est qu'il n'y a pas de place pour ajouter la sélection de filtres ...

Quand je peaufiné cette ligne:

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

Pour que:

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

Cela donnera plus d'espace avant le pivottable et puis, l'erreur est partie. Donc, n'oubliez pas d'ajouter une ligne de départ plus élevée si vous voulez ajouter plus d'un filtre.

Espérons que cela pourrait aider quelqu'un à l'avenir à voir ce post.