Search code examples
c#excelpivot-tableaspose-cells

How can I place my data fields in COLUMNS in my Excel Pivot Table (Aspose Cells)


I have already tried "PivotFieldType.Column" approach. It's not working because the source data Excel sheet looks like below

Excel sheet: Input Data

Company Name FundsinUse LastDayCash

  • My Company AA -33848 37
  • My Company AA -33848 37
  • My Company AA -33848 37
  • My Company BB 2188.75 55.5
  • My Company BB 2188.75 55.5
  • My Company BB 2188.75 55.5
  • My Company BB 2188.75 55.5

=======================

I am creating Pivot table from this "Input Data" sheet and the generated Excel looks like below:

Row Labels          
My Company AA    FundsinUse    -101544
                 LastDayCash    111
My Company BB    FundsinUse     8755
                 LastDayCash    222

I would like to get output like below:

Row Labels          FundsinUse        LastDayCash
My Company AA        -101544            111
My Company BB         8755              222

Please help me to implement "Drag To Colum" on Data Fields using C#

Sample code

string sourceData = string.Format("='Input Data'!A1:BU{0}", totalRows + 1);

int indexOfFirstSheet = workbookDesigner.Workbook.Worksheets["FirstSheet"].Index;

Worksheet newWS = workbookDesigner.Workbook.Worksheets.Insert(indexOfFirstSheet + 1, SheetType.Worksheet, "My Pivot Sheet");

PivotTableCollection pivotTablesColl = newWS.PivotTables;

int index = pivotTablesColl.Add(sourceData, "A3", "My Pivot");

PivotTable pt = pivotTablesColl[index];
pt.RowGrand = true;
pt.ColumnGrand = true;

//Row field
pt.AddFieldToArea(PivotFieldType.Row, "Company Name");

// Data fields
pt.AddFieldToArea(PivotFieldType.Data, "FundsinUse");
pt.AddFieldToArea(PivotFieldType.Data, "LastDayCash");

PivotField fundsinUse = pt.DataFields[0];
fundsinUse.DragToColumn = true;

Solution

  • Please use the PivotTable.DataField for your needs. Please see the following sample code and screenshots showing the input and output Excel files.

    C#

    Workbook wb = new Workbook("source.xlsx");
    
    Worksheet ws = wb.Worksheets[0];
    
    PivotTable pt = ws.PivotTables[0];
    
    PivotField pdf = pt.DataField;
    
    pt.AddFieldToArea(PivotFieldType.Column, pt.DataField);
    
    pt.RefreshData();
    pt.CalculateData();
    
    wb.Save("output.xlsx");
    

    Screenshot - Before

    enter image description here

    Screenshot - After

    enter image description here

    Note: I am working as Developer Evangelist at Aspose