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失败了。-数据透视表是不可能修改的。
有人这样做过吗?他们能证实这确实是可能的吗?有样例代码吗?
很多谢谢,肖恩
两件事:
TableRange1不包括数据透视表的标题,所以这就是为什么你得到"不能修改"错误。使用TableRange2选择整个数据透视表。
同样,你不能在Cut上使用PasteSpecial,所以只能使用Cut方法的Destination参数。下面是它在VB中的样子:
pivotTable.TableRange2.Cut Destination:=NewRange