je produis une feuille Excel qui contient des données formatées comme ceci:Comment puis-je déplacer les "sous-éléments" dans un tableau croisé dynamique Excel vers une autre colonne?
OIEau, les « Total des colis », « Total des achats », « Prix moyen », et les valeurs « % du total » sont situés dans une colonne de leur propre (Data) pour chaque description globale (ou sidearching).
Quand je PivotTablize ces données, il met ces valeurs en dessous de chaque description:
Cela est logique, mais ceux qui sont habitués à l'apparence précédente voulez qu'il soit reproduit dans le tableau croisé dynamique. Comment puis-je déplacer les "sous-éléments" de la description dans le tableau croisé dynamique vers leur propre colonne?
Voici le code que j'utilise pour générer le tableau croisé dynamique:
private void PopulatePivotTableSheet()
{
string NORTHWEST_CORNER_OF_PIVOT_TABLE = "A6";
AddPrePivotTableDataToPivotTableSheet();
var dataRange = rawDataWorksheet.Cells[rawDataWorksheet.Dimension.Address];
dataRange.AutoFitColumns();
var pivotTable = pivotTableWorksheet.PivotTables.Add(
pivotTableWorksheet.Cells[NORTHWEST_CORNER_OF_PIVOT_TABLE],
dataRange,
"PivotTable");
pivotTable.MultipleFieldFilters = 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;
// Row field[s]
var descRowField = pivotTable.Fields["Description"];
pivotTable.RowFields.Add(descRowField);
// Column field[s]
var monthYrColField = pivotTable.Fields["MonthYr"];
pivotTable.ColumnFields.Add(monthYrColField);
// Data field[s]
var totQtyField = pivotTable.Fields["TotalQty"];
pivotTable.DataFields.Add(totQtyField);
var totPriceField = pivotTable.Fields["TotalPrice"];
pivotTable.DataFields.Add(totPriceField);
// Don't know how to calc these vals here, so have to grab them from the source data sheet
var avgPriceField = pivotTable.Fields["AvgPrice"];
pivotTable.DataFields.Add(avgPriceField);
var prcntgOfTotalField = pivotTable.Fields["PrcntgOfTotal"];
pivotTable.DataFields.Add(prcntgOfTotalField);
}
Donc il y a une RowField ("MonthYr") avec des valeurs telles que "201509" et "201510", un ColumnField ("Description") et quatre DataFields, qui s'alignent dans le champ de la colonne Description. Je veux déplacer ces quatre champs vers la droite, vers leur propre colonne, et l'étiquette de description pour être centré verticalement entre ces quatre valeurs à leur gauche. [Comment est-ce possible?
ajouté le code de fusion étiquettes de description. – Salvador
En raison d'autres choses qui ne fonctionnent pas vraiment dans EPPlus, j'aurai probablement besoin de l'implémenter dans Excel Interop à la place; le code est-il le même pour ça? –
Je pense que c'est, ne l'ai pas encore essayé: https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.pivottable.aspx – Salvador