Активация Показать детали для итоговой сводной таблицы в C # - PullRequest
1 голос
/ 03 апреля 2019

Я пытаюсь автоматизировать создание «Показать детали» сводной таблицы из Excel, используя C #

using Excel = Microsoft.Office.Interop.Excel;

Мой код:

var excelApp = new Excel.Application();
excelApp.Visible = true;
Excel.Workbook workbook = excelApp.Workbooks.Open(@"D:\path_to_excel_file.xlsm");
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets["Sheet_Name"];

Excel.PivotTable pivot = worksheet.PivotTables("defined_pivot_table_name");
pivot.DataBodyRange.ShowDetail = true;

Код работает, но он отображает только детали первого значения «Итого». Но то, что я хочу, - это получить «Show Details» из «Grand Total». В этом случае для этой сводной таблицы будет создан новый лист с 4 элементами, но мне нужен общий итог (202).

enter image description here

Я пытался сначала выбрать его по pivot.PivotSelect("Grand Total");, но все еще безрезультатно. Я также проверил pivot.RowGrand и pivot.ColumnGrand, которые оба возвращают True.

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

Если ваша сводная таблица имеет оба значения, RowGrand И ColumnGrand, то она также имеет общую сумму

if (pivot.RowGrand && pivot.ColumnGrand)

. Затем вы можете использовать последнюю ячейку сводной таблицы TableRange1, чтобы сгенерировать детали.ShowDetail

int countRows = pivot.TableRange1.Rows.Count;
int countColumns = pivot.TableRange1.Columns.Count;
pivot.TableRange1.Cells[countRows, countColumns].ShowDetail = true;
1 голос
/ 15 апреля 2019

Может быть это может помочь

// Access the pivot table by its name in the collection. 
PivotTable pivotTable = worksheet.PivotTables["PivotTable1"];


// Access the pivot field by its name in the collection. 
PivotField field = pivotTable.Fields["Category"];


// Display multiple subtotals for the field.   
field.SetSubtotal(PivotSubtotalFunctions.Sum | PivotSubtotalFunctions.Average);

// Show all subtotals at the bottom of each group. 
pivotTable.Layout.ShowAllSubtotals(false);

// Hide grand totals for rows.
pivotTable.Layout.ShowRowGrandTotals = False

// Hide grand totals for columns.
pivotTable.Layout.ShowColumnGrandTotals = False

// custom label for grand totals
pivotTable.View.GrandTotalCaption = "Total Sales";
...