c# Excel VSTO -可以移动数据透视表

本文关键字:移动 数据 透视 Excel VSTO | 更新日期: 2023-09-27 18:18:13

我正试图在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
        {
        }
    }

然而,我总是得到一个异常。:- pastspecial失败了。-数据透视表是不可能修改的。

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

很多谢谢,肖恩

c# Excel VSTO -可以移动数据透视表

两件事:

TableRange1不包括数据透视表的标题,所以这就是为什么你得到"不能修改"错误。使用TableRange2选择整个数据透视表。

同样,你不能在Cut上使用PasteSpecial,所以只能使用Cut方法的Destination参数。下面是它在VB中的样子:

pivotTable.TableRange2.Cut Destination:=NewRange