【问题标题】:Creating Pivot Table c# interop创建数据透视表 c# interop
【发布时间】:2020-03-30 13:12:28
【问题描述】:

我正在尝试从具有 C# 互操作的完整工作表中创建数据透视表,但我遇到了一些错误,不知道是我的代码还是这个示例老了。

我正在关注这个示例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";

但我收到此错误:

无法转换参数 2 以调用 Add

错误在这一行:

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

有人知道这个错误吗?

【问题讨论】:

  • 数据透视表需要针对工作表而不是工作簿。 libroActual 是一个工作簿。
  • @jdweng 谢谢你的评论。我已经编辑了帖子。
  • 您是否只想抓取单元格 A1 和 P56?
  • 嗨@Jacob 我已经编辑了错误的帖子!
  • 我问的原因是你的错误行不在你提供的代码 sn-p 中。在问题中,您有 pt = (Microsoft.Office.Interop.Excel.PivotTable)sheetMMPP.PivotTables().Add("Pivot Table", Worksheet.Range["A1"], cache);你说的错误是 pt = (Microsoft.Office.Interop.Excel.PivotTable)sheetMMPP.PivotTables().Add("Pivot Table", Worksheet.Range["A1", "P56"], cache);

标签: c# excel pivot-table interop


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2018-03-29
    相关资源
    最近更新 更多