Я столкнулся с проблемой при создании сводной таблицы в Excel с использованием c #, когда созданная сводная таблица отображает дополнительные пустые столбцы (которые все еще являются частью сводной таблицы) после их создания и добавления на лист.
Ориентация всех полей сводной таблицы установлена в Excel.XlPivotFieldOrientation.xlRowField. Если я вручную перетаскиваю одно из полей в раздел «Значения» сводной таблицы в Excel, то, похоже, таблица отображается правильно. Если я удаляю его, дополнительные пустые столбцы отображаются еще раз.
Ниже приведена функция для создания сводной таблицы:
public void CreatePivotTable(Excel.Workbook workbook, Excel.Worksheet worksheet, Excel.Range sourceRange)
{
object useDefault = Type.Missing;
Excel.PivotTable pivotTable;
Excel.Range pivotData;
Excel.Range pivotDestination;
Excel.PivotField parentNameField;
Excel.PivotField parameterNameField;
Excel.PivotField parameterTypeField;
Excel.PivotField parameterValueField;
string pivotTableName = "ParametersPivot";
pivotData = sourceRange;
pivotDestination = worksheet.Range["A15", "A15"];
Excel.PivotCache pivotCache = workbook.PivotCaches().Create(Excel.XlPivotTableSourceType.xlDatabase, sourceRange, Type.Missing);
Excel.PivotTables pivotTables = worksheet.PivotTables(Type.Missing);
pivotTable = pivotTables.Add(pivotCache, pivotDestination, pivotTableName, Type.Missing, Type.Missing);
pivotTable.ColumnGrand = false;
pivotTable.RowGrand = false;
pivotTable.HasAutoFormat = true;
pivotTable.
parentNameField = (Excel.PivotField)pivotTable.PivotFields(1);
parentNameField.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
parameterNameField = (Excel.PivotField)pivotTable.PivotFields(2);
parameterNameField.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
parameterTypeField = (Excel.PivotField)pivotTable.PivotFields(3);
parameterTypeField.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
parameterValueField = (Excel.PivotField)pivotTable.PivotFields(4);
parameterValueField.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
//Format the Pivot Table.
pivotTable.Format(Excel.XlPivotFormatType.xlPTNone);
pivotTable.InGridDropZones = false;
pivotTable.SmallGrid = false;
pivotTable.ShowTableStyleRowStripes = false;
pivotTable.TableStyle2 = "PivotStyleMedium8";
//// Page Field
//parentNameField.Orientation = Excel.XlPivotFieldOrientation.xlPageField;
//parentNameField.Position = 1;
//parentNameField.CurrentPage = "(All)";
}
Создана сводная таблица
Все поля установлены как значения строк
Любое поле, перетаскиваемое в раздел значений разворота
Результирующая сводная таблица после перетаскивания поля в раздел значений