2011-07-12 19 views
3

如何根据工作表中已创建的表的数据创建数据透视表?如何使用c#在Excel中添加透视图?

+0

一个有用的链接:http://social.msdn.microsoft.com/Forums/en-AU/vsto/thread/8baa20f4-05b5-4833-a8cc-791cea951dc8 –

+0

从这是我能够制作一个数据透视表,但我怎样才能将它制作成图表? – Sam

回答

4

尝试这样:

  Microsoft.Office.Interop.Excel.PivotTable pivotCache = Globals.ThisAddIn.Application.ActiveWorkbook.PivotCaches(). 
       Create(Microsoft.Office.Interop.Excel.XlPivotTableSourceType.xlDatabase, hoursTable2, XlPivotTableVersionList.xlPivotTableVersion12). 
       CreatePivotTable("PivotTable!R1C1", "PivotTable1", Type.Missing, XlPivotTableVersionList.xlPivotTableVersion12); 
      Microsoft.Office.Interop.Excel.Shape myChart = lPivotWorksheet.Shapes.AddChart(); 
      myChart.Chart.SetSourceData(pivotCache.TableRange1, Type.Missing); 

      Globals.ThisAddIn.Application.ActiveWorkbook.ShowPivotChartActiveFields = true; 

      Microsoft.Office.Interop.Excel.PivotField rowField = (Microsoft.Office.Interop.Excel.PivotField)pivotCache.PivotFields("FieldTitle1"); 
      rowField.Orientation = Microsoft.Office.Interop.Excel.XlPivotFieldOrientation.xlRowField; 

      pivotCache.AddDataField(pivotCache.PivotFields("FieldTitle2"), "Sum of Difference", Microsoft.Office.Interop.Excel.XlConsolidationFunction.xlSum); 

      Microsoft.Office.Interop.Excel.PivotField pageField = (Microsoft.Office.Interop.Excel.PivotField)pivotCache.PivotFields("FieldTitle3"); 
      pageField.Orientation = Microsoft.Office.Interop.Excel.XlPivotFieldOrientation.xlPageField; 

      myChart.ScaleHeight(2, Microsoft.Office.Core.MsoTriState.msoFalse, Type.Missing); 
      myChart.ScaleWidth(2, Microsoft.Office.Core.MsoTriState.msoFalse, Type.Missing); 
      myChart.Left = 200; 
      myChart.Top = 120; 
      myChart.Chart.ChartTitle.Caption = "Chart Title"; 
0

Berbies的回答让我在正确的轨道上。我相信我的代码会更容易阅读。数据透视表是使用文档this link创建的。我使用Excel 2007中

 // assign the new pivot table 
     PivotTable pivotTable = (PivotTable)pivotSheet.PivotTables("pivotTableName"); 

     // Create a pivot chart using a pivot table as its source 
     Shape chartShape = pivotSheet.Shapes.AddChart(); 
     chartShape.Chart.SetSourceData(pivotTable.TableRange1, Type.Missing); 
     CurrentWorkbook.ShowPivotChartActiveFields = true; 
     chartShape.Chart.ChartType = XlChartType.xlAreaStacked; 
相关问题