Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 激活显示C中透视表总计的详细信息#_C#_Excel_Pivot Table_Office Interop - Fatal编程技术网

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

C# 激活显示C中透视表总计的详细信息#,c#,excel,pivot-table,office-interop,C#,Excel,Pivot Table,Office Interop,我正在尝试使用C从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["S

我正在尝试使用C从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)

我试着先通过
pivot.PivotSelect(“总计”)选择它但仍然没有结果。我还检查了
pivot.RowGrand
pivot.ColumnGrand
,它们都返回True。

可能会有所帮助


如果数据透视表同时具有,
RowGrand
ColumnGrand
,则它也具有总计

if (pivot.RowGrand && pivot.ColumnGrand)
然后,您可以使用数据透视表的
TableRange1
的最后一个单元格,通过
showdeail

int countRows = pivot.TableRange1.Rows.Count;
int countColumns = pivot.TableRange1.Columns.Count;
pivot.TableRange1.Cells[countRows, countColumns].ShowDetail = true;

我不知道c#,但在VBA中,您需要首先找到包含总计的最后一个单元格(在您的图像中,包含值
202
)然后使用命令
Range(“B16”)。ShowDetails=True
它会工作(如果
202
它当然位于单元格
B16
)。您需要找到范围并设置为true属性
ShowDetails
。希望至少这能给你一个线索。我无法将其作为答案发布,因为它不是
c
。检查。我之所以发布这篇文章,是因为我在C语言中看到了许多代码,它们在使用Excel对象时使用了与VBA类似的语法。如果
pivot.RowGrand
pivot.ColumnGrand
都是真的,那么你的数据透视表就有一个总计,你可以使用它的
TableRange1
的最后一个单元格来表示
范围。ShowDetail
@Asger这很有效。非常感谢。请把你的评论扩展成一个答案,这样我就可以奖励你:)干杯。
if (pivot.RowGrand && pivot.ColumnGrand)
int countRows = pivot.TableRange1.Rows.Count;
int countColumns = pivot.TableRange1.Columns.Count;
pivot.TableRange1.Cells[countRows, countColumns].ShowDetail = true;