2016-10-13 3 views
2

*私はExcelのVSTOのためのC#。ネットを通じてピボットテーブルを作成しようとしているが、州というスローされた例外になっ保ってる新しいコードエクセルVSTO +のC#.NET +ピボットテーブルを作成します

して以下に編集:

Exception from HRESULT: 0x800A03EC 

私は、ピボットテーブルを作成しようとしていますシートはoSheetと呼ばれ、私はピボットテーブルソースの範囲を作成して、ソースデータに

を持っているシートと同じです。

Excel.Range pivotData = osheet.Range["A1", "B3"]; 

ピボットテーブルがされる場所のための範囲:

Excel.Range pivotDest = osheet.Range["A12", "B14"]; 

これでテーブルを作成しよう:

osheet.PivotTableWizard(
       Excel.XlPivotTableSourceType.xlDatabase, 
       pivotData, 
       pivotDest, 
       "Table", 
       true, 
       true, 
       true, 
       true, 
       true, 
       true, 
       false, 
       false, 
       Excel.XlOrder.xlDownThenOver, 
       0, 
       false, 
       false 
); 

エラーがテーブルウィザードラインで発生しています。

C#.Netを介してピボットテーブルを作成する際に、エラーの原因や改善策について説明してください。

私は先日同様の質問に答え

 Excel.Application oApp; 
     Excel.Worksheet osheet; 
     Excel.Workbook oBook; 

     oApp = new Excel.Application(); 
     oBook = oApp.Workbooks.Add(); 
     osheet = (Excel.Worksheet)oBook.Worksheets.get_Item(1); 

     osheet.Cells[1, 1] = "Name"; 
     osheet.Cells[1, 2] = "Salary"; 

     osheet.Cells[2, 1] = "Frank"; 
     osheet.Cells[2, 2] = 1500000; 

     osheet.Cells[3, 1] = "Millford"; 
     osheet.Cells[3, 2] = 2200; 

     //Now capture range of first sheet = I will need this to create pivot table 
     Excel.Range oRange = osheet.Range["A1", "B3"]; 


     var pch = oBook.PivotCaches(); 

     Excel.Range pivotData = osheet.Range["A1", "B3"]; 

     Excel.PivotCache pc = pch.Create(XlPivotTableSourceType.xlDatabase, pivotData); 
     Excel.PivotTable pvt = pc.CreatePivotTable(osheet.Range["A12"], "MyPivotTable"); 

     pvt.PivotFields("Col1").Orientation = XlPivotFieldOrientation.xlRowField; 
     pvt.PivotFields("Col2").Orientation = XlPivotFieldOrientation.xlColumnField; 
     pvt.AddDataField(pvt.PivotFields("Col3"), "Sum of Col3", XlConsolidationFunction.xlSum); 
+0

は '[あなたが使用しようとしたPivotTables.Add'を持っています](https://msdn.microsoft.com/en-us/library/office/ff196910.aspx)を使用してください。 – PetLahev

答えて

1

*新しいコード...一言で言えば

https://stackoverflow.com/a/39968355/1278553

、C#で、ピボットテーブルを作成する方法は次のとおりです。

Excel.Range pivotData = osheet.Range["A1", "B3"]; 

Excel.PivotCache pc = pch.Create(XlPivotTableSourceType.xlDatabase, pivotData); 
Excel.PivotTable pvt = pc.CreatePivotTable(osheet.Range["A12"], "MyPivotTable"); 

次に、行/列とデータフィールドを割り当てます。

pvt.PivotFields("Col1").Orientation = XlPivotFieldOrientation.xlRowField; 
pvt.PivotFields("Col2").Orientation = XlPivotFieldOrientation.xlColumnField; 
pvt.AddDataField(pvt.PivotFields("Col3"), "Sum of Col3", XlConsolidationFunction.xlSum); 

私は以前の回答から大いに盗られました。

- EDIT 2016年10月17日 -

あなたの更新されたコード毎の、これが今のピボットテーブルを作成するために動作するはずです:

var pch = oBook.PivotCaches(); 

Excel.Range pivotData = osheet.Range["A1", "B3"]; 

Excel.PivotCache pc = pch.Create(Excel.XlPivotTableSourceType.xlDatabase, pivotData); 
Excel.PivotTable pvt = pc.CreatePivotTable(osheet.Range["A12"], "MyPivotTable"); 

pvt.PivotFields("Name").Orientation = Excel.XlPivotFieldOrientation.xlRowField; 
pvt.AddDataField(pvt.PivotFields("Salary"), "Total Salary", 
    Excel.XlConsolidationFunction.xlSum); 
+0

回答ありがとう@Hambone;私は答えの一番下にある編集されたコードで何かを見逃していますか?ピボットテーブルは作成されません。 – HShhanick

+1

@HShhanick - 投稿したコードに基づいてソリューションを更新しました。実際に間違っていたのは、名前で列を参照する必要があっただけです。私はこれをテストし、それは私の目的のために働いた。うまくいけばそれもあなたの上にあります – Hambone

関連する問題