2012-03-07 29 views
2

我能夠使用Microsoft.Office.Interop.Excel.PivotFields屬性在透視字段上應用NumberFormat。但是這不會將相同的格式應用於總結字段。是否有數據透視表中的所有字段的單獨屬性,我缺少?在透視字段上應用數字格式

Microsoft.Office.Interop.Excel.PivotFields pFields = pivotTable.PivotFields(); 
     foreach (Microsoft.Office.Interop.Excel.PivotField pf in pFields) 
      if (pf.DataType == XlPivotFieldDataType.xlNumber) 
       pf.NumberFormat = "#,##0.00"; 
+0

是否有一個原因,您不能設置數據透視表上創建數據透視表/列/行上的數字格式? – 2013-03-29 12:44:37

回答

1

對這些成員的文檔是不完全晶瑩剔透,但有點挖周圍和反覆試驗後,它看起來像你想要的屬性是PivotTable.VisibleFields,你需要轉換到PivotFields對象遍歷:

Excel.PivotFields vFields = (Excel.PivotFields)pivotTable.VisibleFields; 

這會給你表中的所有可見字段(而不是PivotTable.PivotFields()這似乎只是給你行標籤欄和底層源數據)。您可能需要您設置的數字格式,否則我相信這將是適用於一切在餐桌上,你想要什麼這可能不是之前檢查每個人的價值:

foreach (Excel.PivotField pf in vFields) 
{ 
    if (pf.DataType == Excel.XlPivotFieldDataType.xlNumber 
     & pf.Value == "Sum of Price") 
    { 
     pf.NumberFormat = "#,##0.00"; 
    } 
} 

如果你想要去一個細胞在特定的,那麼你就可以訪問PivotField.PivotItems並反覆通過這些每個PivotField對象:

Excel.PivotItems pi = (Excel.PivotItems)pf.PivotItems(); 

但是我覺得大部分的PivotItem屬性是隻讀的。

相關問題