C#Excel VSTO – 可以移动一个数据透视表?

我正在尝试在VSTO中移动一个数据透视表,而不是成功。 我的逻辑是find数据透视表的范围,剪切并粘贴到一个新的范围,我确信工作表上没有数据存在。

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 { } } 

但是,我总是得到一个例外。 或者: – PasteSpecial失败。 – 有些东西是不可能修改数据透视表的。

有没有人做过这个? 他们能证实这确实可行吗? 任何示例代码?

非常感谢,肖恩

两件事情:

TableRange1不包括数据透视表的标题,所以这就是为什么你得到“无法修改”的错误。 使用TableRange2来select整个数据透视表。

另外,你不能在Cut上做一个PasteSpecial,所以只需使用Cut方法的Destination参数。 这是如何看起来在VB中:

 pivotTable.TableRange2.Cut Destination:=NewRange