Как разместить поля данных в столбцах сводной таблицы Excel (ячейки Aspose)

Я уже пробовал подход "PivotFieldType.Column". Он не работает, потому что лист Excel с исходными данными выглядит так, как показано ниже.

Лист Excel: входные данные

Название компании FundsinUse LastDayCash

  • Моя компания АА -33848 37
  • Моя компания АА -33848 37
  • Моя компания АА -33848 37
  • Моя компания BB 2188,75 55,5
  • Моя компания BB 2188,75 55,5
  • Моя компания BB 2188,75 55,5
  • Моя компания BB 2188,75 55,5

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

Я создаю сводную таблицу из этого листа «Входные данные», и сгенерированный Excel выглядит следующим образом:

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

Я хотел бы получить вывод, как показано ниже:

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

Пожалуйста, помогите мне реализовать «Перетаскивание в столбец» в полях данных с помощью С#.

Образец кода

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;

person Obuli    schedule 24.10.2017    source источник


Ответы (3)


Используйте PivotTable.DataField для своих нужд. См. следующий пример кода и снимки экрана, на которых показаны входные и выходные файлы Excel.

С#

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

Скриншот — до

введите здесь описание изображения

Скриншот — после

введите здесь описание изображения

Примечание. Я работаю разработчиком-евангелистом в Aspose

person shakeel    schedule 25.10.2017
comment
Я уже пробовал подход PivotFieldType.Column. Это не работает, потому что исходные данные снова под вопросом. Я отредактировал вопрос. - person Obuli; 25.10.2017

PivotTable pt = (PivotTable)hoja2.PivotTables("TD1");
pt.Format(XlPivotFormatType.xlReport1);

это работает для меня

person luis ort    schedule 23.01.2020
comment
Возможно, вы захотите поместить это решение в то место, где оно должно быть в вопросе. Этот оператор находится в конце кода? - person Mark McWhirter; 23.01.2020

По какой-то причине, когда у вас есть два или более полей данных и нет полей столбца, вам нужно добавить виртуальное поле в столбцы, чтобы оно отображалось должным образом.

// Add virtual field to column
pt.AddFieldToArea(PivotFieldType.Column, pt.DataField);

Более полный пример см. здесь: https://forum.aspose.com/t/how-do-you-add-a-count-column-to-a-pivottable/166240/8

person Scott Stafford    schedule 06.05.2021