*下面用新代码编辑

我正在尝试通过C#.Net为Excel VSTO创建数据透视表,但是不断抛出异常,指出:

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);

最佳答案

前几天,我刚刚回答了类似的问题。

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);


我从先前的回答中heavily窃。

-编辑10/17/2016-

现在,根据您更新的代码,这应该可以创建数据透视表:

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);

关于c# - Excel VSTO + C#.NET +创建数据透视表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40023017/

10-16 12:39
查看更多