在Excel c#中粘贴值
本文关键字:Excel | 更新日期: 2023-09-27 17:52:16
你好,我一直试图在另一张表上使用PasteSpecial粘贴值,但我尝试过的每件事我都收到同样的错误。
Range类的PasteSpecial方法失败
xl.Application xlApp = Globals.ThisWorkbook.Application;
xl.Workbook wb = xlApp.ActiveWorkbook;
xl.Worksheet data = wb.Sheets["Data"];
xl.Worksheet datasheet = wb.Sheets["DataSheet"];
xl.Worksheet pivot = wb.Sheets["Pivot"];
xl.Range dataRng = data.Range["A1:C" +
xlApp.WorksheetFunction.CountA(data.Range["A:A"])];
xl.Range pivotRng = pivot.Range["A1"];
addPivot ap = new addPivot();
ap.DataRange = dataRng;
ap.DestRng = pivotRng;
ap.PivotSheet = pivot;
ap.createPivot("FullName","Date");
pivot.PivotTables("PivotTable1").NullString = "0";
pivot.UsedRange.Copy();
datasheet.Range["A2:GT999"].ClearContents();
datasheet.Range["A2"].PasteSpecial(xl.XlPasteType.xlPasteValues,
xl.XlPasteSpecialOperation.xlPasteSpecialOperationNone,
System.Type.Missing, System.Type.Missing);
datasheet.Range["2:2"].ClearContents();
I have Tried
datasheet.Range["A2"].PasteSpecial(xl.XlPasteType.xlPasteValues
datasheet.Range["A2"].PasteSpecial(xl.XlPasteType.xlPasteValues,
xl.XlPasteSpecialOperation.xlPasteSpecialOperationNone)
和你在上面看到的
谢谢!
先做ClearContents
后做Copy
。当您清除这些单元格时,Excel正在删除您复制的范围(与在程序中击中ESC
相同)。然后您尝试PasteSpecial
,但剪贴板中不再有任何内容。
//...code above
datasheet.Range["A2:GT999"].ClearContents();
pivot.UsedRange.Copy();
datasheet.Range["A2"].PasteSpecial(xl.XlPasteType.xlPasteValues,
xl.XlPasteSpecialOperation.xlPasteSpecialOperationNone,
System.Type.Missing, System.Type.Missing);
//code below...
如果您正在逐步调试,您将看到在ClearContents
调用后复制范围周围的虚线边界消失。当复制的范围被忘记时,Excel有点奇怪(但可以预测)。在Workbook
的任何地方编辑单元格是一种肯定的方法,让它忘记。