C# C Excel VSTO-是否可以移动数据透视表?

C# C Excel VSTO-是否可以移动数据透视表?,c#,excel,vsto,paste,pivot-table,C#,Excel,Vsto,Paste,Pivot Table,我试图在VSTO中移动数据透视表,但根本没有成功。我的逻辑是找到数据透视表的范围,将其剪切并粘贴到一个新的范围中,我确信工作表中不存在任何数据 public static void MovePivotTable(string sheetName, PivotTable pivotTable, int newX, int newY, int width, int height) { try { Worksheet worksh

我试图在VSTO中移动数据透视表,但根本没有成功。我的逻辑是找到数据透视表的范围,将其剪切并粘贴到一个新的范围中,我确信工作表中不存在任何数据

    public static void MovePivotTable(string sheetName, PivotTable pivotTable, int newX, int newY, int width, int height)
    {
        try
        {
            Worksheet worksheet = GetOrCreateWorksheet(sheetName);

            Range topLeft = (Range)worksheet.Cells[newX, newY];
            Range bottomRight = (Range)worksheet.Cells[newX + width, newY + height];
            Range newRange = worksheet.get_Range(topLeft, bottomRight);

            pivotTable.TableRange1.Cut(Missing.Value);

            newRange.PasteSpecial(XlPasteType.xlPasteAll, XlPasteSpecialOperation.xlPasteSpecialOperationNone,
                Missing.Value, Missing.Value);

            return;
        }
        catch (Exception)
        {
        }
        finally
        {
        }
    }
然而,我总是得到一个例外。要么: -这次特别会议失败了。 -类似于不可能修改透视表的内容

有人这样做过吗?他们能否证实这确实是可能的?有样本代码吗

非常感谢,, 肖恩有两件事:

TableRange1不包括数据透视表的标题,因此您会收到“无法修改”错误。使用TableRange2选择整个数据透视表

此外,不能对剪切执行特殊粘贴,因此只需使用剪切方法的Destination参数即可。这是它在VB中的外观:

pivotTable.TableRange2.Cut Destination:=NewRange

您使用什么库来操作excel工作表?嗨,谢谢您的回答。不幸的是,它仍然以相同的错误崩溃。尝试执行range.cutdestination、range.copymissing+range.deletemissing+worksheet.pastenewRange,但仍然没有成功。您没有这么说,但我假设您也尝试了TableRange2。我会尝试一个简单的范围,比如Activesheet.RangeA1。另外,您在原始问题中列出了两个错误。请更具体一点。我已经尝试了一系列解决方案来解决这个问题,在整个测试过程中,我一直在苦苦思索无法修改透视表的问题。这件事曾经发生过一次,我不太记得该如何重新发布它,但我记得它传达的信息就是这样的。第二个错误是对象的方法剪切失败。再一次,我非常怀疑这是法语中出现的错误信息,所以我相信这是英语信息的正确翻译。最后,我尝试了TableRange2,但没有成功。我会像你建议的那样尝试一个简单的范围