2016-10-13 5 views
2

*이 새로운 내가 엑셀 ​​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); 

나는 내 이전의 대답에서 크게 표절.

- 편집 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