在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)

和你在上面看到的

谢谢!

在Excel c#中粘贴值

先做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的任何地方编辑单元格是一种肯定的方法,让它忘记。