激活C#中数据透视表总计的显示详细信息

时间:2019-04-03 11:54:21

标签: c# excel pivot-table office-interop

我正在尝试使用C#从Excel自动创建数据透视表的“显示详细信息”

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;

该代码有效,但仅显示第一个“总计”值的详细信息。但是我想要的是获取“总计”的“显示详细信息”。 在这种情况下,对于此数据透视表,它将创建一个包含4个元素的新工作表,但我想要的是总计(202)。

enter image description here

我尝试通过pivot.PivotSelect("Grand Total");首先选择它,但仍然没有结果。我还检查了pivot.RowGrandpivot.ColumnGrand都返回True的情况。

2 个答案:

答案 0 :(得分:1)

也许this可以帮助

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

答案 1 :(得分:1)

如果您的数据透视表同时具有RowGrandColumnGrand,那么它也有总计

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;