创建枢轴 Table c# 互操作

Creating Pivot Table c# interop

我正在尝试使用 C# 互操作从完整工作表创建数据透视表 Table,但出现一些错误,不知道是我的代码还是这个例子是旧的。

我正在关注这个示例Creating a Pivot Table c#

但是我尝试的时候,找不到一些方法。 这是我的代码:

            Microsoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.Application();

            Workbooks libro = Excel.Workbooks;
            Workbook libroActual = libro.Add();
            Sheets sheets = libroActual.Worksheets;

            //Excel.Workbooks.Add();

            // Instanciamos la hora activa
            Microsoft.Office.Interop.Excel._Worksheet Worksheet = Excel.ActiveSheet;
            Worksheet.Name = "Desglose";

            Worksheet sheetMMPP = Excel.Worksheets.Add();
            sheetMMPP.Name = "MMPP";// CreateEmptySheet(); 

            Microsoft.Office.Interop.Excel.Range dataRange = Worksheet.UsedRange;
            Microsoft.Office.Interop.Excel.PivotCache cache = (Microsoft.Office.Interop.Excel.PivotCache)libroActual.PivotCaches().Add(Microsoft.Office.Interop.Excel.XlPivotTableSourceType.xlDatabase,dataRange);
            Microsoft.Office.Interop.Excel.PivotTable pt = (Microsoft.Office.Interop.Excel.PivotTable)sheetMMPP.PivotTables().Add("Pivot Table", Worksheet.Range["A1"], cache);

            Microsoft.Office.Interop.Excel.PivotField oPivotField = (Microsoft.Office.Interop.Excel.PivotField)pt.PivotFields("Nivel 0");
            oPivotField.Orientation = Microsoft.Office.Interop.Excel.XlPivotFieldOrientation.xlDataField;
            oPivotField.Function = Microsoft.Office.Interop.Excel.XlConsolidationFunction.xlSum;
            oPivotField.Name = "Nivel 0";

但是我得到这个错误:

Could not convert argument 2 for call to Add

错误在这一行:

Microsoft.Office.Interop.Excel.PivotTable pt = (Microsoft.Office.Interop.Excel.PivotTable)sheetMMPP.PivotTables().Add("Pivot Table", Worksheet.Range["A1", "P56"], cache);

有人知道这个错误吗?

看来您混淆了库。在您的 link 中,该示例基于 Spire.xls 库,但在代码中您使用 Interop.Excel 和 Spire 语法。 Interop.Excel PivotTables.Add 方法有不同的参数 - Add (Microsoft.Office.Interop.Excel.PivotCache PivotCache, object TableDestination, [object TableName], [object ReadData], [object DefaultVersion])