2014-09-19 53 views
3

我正在使用EPPLUS來生成我的數據透視表(see this SO post)。我有以下代碼在透視表中隱藏小計在epplus中

//group by fields 
foreach (string row in _GroupByColumns) 
{ 
    ExcelPivotTableField field = pivotTable.Fields[row]; 

    //field formating 
    field.Sort = eSortType.Ascending; 
    field.Outline = false; 
    field.Compact = false; 
    field.ShowAll = false; 
    field.SubtotalTop = false; //doesn't work, subtotals still there when excel is opened 

    //doesn't work, will result in "unreadable content" error when Excel is opened 
    //field.SubTotalFunctions = eSubTotalFunctions.None; 

    //add it to the pivot 
    pivotTable.RowFields.Add(field); 
} 

_GroupByColumnsList<string>包含我GROUP BY列。我認爲field.SubtotalTop = false;會隱藏小計。它沒有。當我打開我的Excel時,field.SubTotalFunctions = eSubTotalFunctions.None;會導致「無效數據」錯誤。我還能嘗試什麼?

+0

這是一個工作簿,將被重用,或者是每次需要這樣做時重新生成的工作簿? – 2014-09-22 18:28:04

+0

@ jbarker2160查詢數據庫並每天生成一個新文件。我想我可以用C#代碼截斷並使用模板填充新數據,但我想避免這種情況。 – Kyle 2014-09-22 18:30:13

+0

C#沒有PivotFields類的.Subtotals屬性。您可以在VB.Net或VBA中執行此操作。這是MS的一個已知問題。 SubtotalTop只會修改圖表中小計的位置(bottom vs top)。 – 2014-09-22 18:38:58

回答

6

我知道這是一個古老的問題,但我添加了這個答案,以防有人在這裏使用Google。

您需要在之後將字段添加到RowFields集合中,然後設置SubTotalFunctions屬性。這是因爲將它添加到集合會更改SubTotalFunctions進行調整的XML節點。這將工作...

ExcelPivotTableField field = pivotTable.Fields[row]; 

pivotTable.RowFields.Add(field);//<-- ADD IT FIRST 

//field formating 
field.Sort = eSortType.Ascending; 
field.Outline = false; 
field.Compact = false; 
field.ShowAll = false; 
field.SubtotalTop = false; 
field.SubTotalFunctions = eSubTotalFunctions.None;//<-- THIS WILL WORK NOW