Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建透视表c#互操作_C#_Excel_Pivot Table_Interop - Fatal编程技术网

创建透视表c#互操作

创建透视表c#互操作,c#,excel,pivot-table,interop,C#,Excel,Pivot Table,Interop,我试图用C#互操作从完整的工作表创建透视表,但我遇到了一些错误,不知道是我的代码还是这个示例是旧的 我举这个例子: 但是当我尝试的时候,我找不到一些方法。 这是我的代码: Microsoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.Application(); Workbooks libro = Excel.Workbooks;

我试图用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";
但我得到了这个错误:

无法转换要添加的调用的参数2

错误在这一行:

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

有人知道这个错误吗?

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

数据透视表需要针对工作表而不是工作簿。libroActual是一个工作簿。@jdweng感谢您的评论。我编辑了这篇文章。你是不是只想抓取A1和P56单元格?嗨,雅各布,我编辑了这篇文章,但有错误!我之所以问这个问题,是因为您的错误行不在您提供的代码段中。在问题中,您有一行pt=(Microsoft.Office.Interop.Excel.PivotTable)sheetMMPP.PivotTables().Add(“PivotTable”,Worksheet.Range[“A1”],cache);您说错误是pt=(Microsoft.Office.Interop.Excel.PivotTable)sheetMMPP.PivotTables().Add(“数据透视表”,工作表.Range[“A1”,“P56”],缓存);