C# C Excel VSTO-是否可以移动数据透视表?
我试图在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
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,但没有成功。我会像你建议的那样尝试一个简单的范围