2017-12-16 16 views
1

저는 프로젝트에서 작업 중이며 해결 방법을 모르는 예외가 있습니다. 나는 모든 곳에서 수색했으며 도움이되는 해결책을 찾을 수 없습니다.C#은 interop 잘라 내기 및 붙여 넣기 예외를 뛰어 넘습니다.

열 A의 셀에서 특정 값을 찾은 스프레드 시트에서 범위를 자르고 해당 값의 전체 행을 A2에서 시작하여 값이 더 이상 없을 때까지 새 스프레드 시트에 붙여 넣으려고합니다. 원래 스프레드 시트에 있습니다.

내 코드가 현재 새 스프레드 시트에 한 행을 붙여 넣은 다음 "이 영역은 붙여 넣기 영역과 잘라 내기 영역이 같은 크기와 모양이 아니기 때문에 붙여 넣을 수 없습니다."예외가 발생합니다. 코드;

활성 셀 및 활성 시트 속성을 사용해야한다고 생각합니다.

도와주세요!

public void btnLoad_Click(object sender, EventArgs e) 
{ 
Excel.Application oXL; 
Excel._Workbook oWB; 
Excel._Worksheet oSheet; 
if (dmCheck.IsChecked == true && fldCheck.IsChecked == true) 
{ 
oXL = new Excel.Application(); 
oXL.Visible = true; 
oWB = (Excel._Workbook)(oXL.Workbooks.Add()); 
oSheet = (Excel._Worksheet)oWB.ActiveSheet; 
string dXLPath = @"N:/DAILY2.xlsx"; 
Excel.Workbook dWB = oXL.Workbooks.Open(dXLPath); 
Excel.Worksheet dSheet = dWB.Worksheets.get_Item(1); 
Excel.Range dRng = dSheet.get_Range("B1"); 
dRng.EntireColumn.Hidden = true; 
Excel.Range currentFind = null; 
Excel.Range firstFind = null; 
Excel.Range taskHazpoi = dSheet.get_Range("A2", "A2500"); 
currentFind = taskHazpoi.Find("HAZPOI", Type.Missing, Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false, Type.Missing, Type.Missing); 
while(currentFind != null) 
{ 
if (firstFind == null) 
{ 
firstFind = currentFind; 
} 
else if (currentFind.get_Address(Excel.XlReferenceStyle.xlA1) == firstFind.get_Address(Excel.XlReferenceStyle.xlA1)) 
{ 
break; 
} 
Excel.Range from = currentFind.EntireRow; 
Excel.Range to = oSheet.get_Range("A2:A2500"); 
from.Cut(to); 
currentFind = taskHazpoi.FindNext(currentFind); 
} 
else if (dmCheck.IsChecked == false && fldCheck.IsChecked == false) 
{ 
MessageBox.Show("Please check the DM and Flood box", "Report Loader"); 
} 

답변

0

당신은 셀 영역 A2로 전체 행을 복사하려고합니다. '받는 사람'의 범위에 대한

, oSheet.get_Range("A2").EntireRow 또는 oSheet.get_Range("A:A")을.

+0

나는 당신의 충고를 시도했다. 그리고 첫 번째 옵션은 나에게 같은 예외를 줄 것이다. 그러나 두 번째 제안은 한 줄만 자르고 붙인다. 내 코드를 조금 바꿨지 만 소스 스프레드 시트에 모든 행이 잘리는 것을 볼 수는 있지만 대상 스프레드 시트는 한 행만 붙여 넣기 만합니다. 행이 서로 붙여져 있다고 생각합니다. 이것이 반복 문제입니까? – PTP