2017-09-25 11 views
0

Excel 통합 문서를 저장하려고하는데 "인덱스가 배열 범위 밖에 있습니다"예외가 발생합니다. 내가 잘못 뭐하는 거지"인덱스가 배열 범위 밖에 있습니다"예외 C#

public static void Update() 
{ 

    FileInfo newFile = new FileInfo(@"C:\Users\"); 

    using (ExcelPackage p = new ExcelPackage(newFile)) 
    { 
     ExcelWorkbook work = p.Workbook; 
     ExcelNamedRange sourceRange = work.Names["NewTakt"]; 
     ExcelNamedRange destinationRange = work.Names["PreviousTakt"]; 

     ExcelWorksheet worksheet = sourceRange.Worksheet; 
     int iRowCount = sourceRange.End.Row - sourceRange.Start.Row + 1; 
     int iColCount = sourceRange.End.Column - sourceRange.Start.Column +1; 
     for (int iRow = 0; iRow < iRowCount; iRow++) 
     { 
      for (int iColumn = 0; iColumn < iColCount; iColumn++) 
      {    
       worksheet.Cells[destinationRange.Start.Row + iRow, 
       destinationRange.Start.Column + iColumn].Value = 
       worksheet.Cells[sourceRange.Start.Row + iRow, 
       sourceRange.Start.Column + iColumn].Value; 
      } 
     } 

     p.Save(); ---> the exception happens here 
    } 
} 

:

코드인가? 어떤 도움이라도 대단히 감사합니다.

+4

디버깅하는 방법을 알고 있습니까? 오류가 발생한 상태를 찾을 때까지 단계별로 디버그하십시오. – hellogoodnight

+5

나는 당신이 생각하는 라인에 예외가 없다는 것을 내기를 원한다. – DavidG

+0

가능한 [IndexOutOfRangeException/ArgumentOutOfRangeException이란 무엇입니까?] 및 [해결 방법] (https://stackoverflow.com/questions/20940979/what-is-an-indexoutofrangeexception-argumentoutofrangeexception-and-how-do-if) – VDWWD

답변

1

Excel에서 셀과 범위는 0에서 시작하지 않지만, (1)에서 이와 같이 1부터 시작하여 루프를 변경 : 그래서,

for (int iRow = 1; iRow < iRowCount; iRow++) 
    { 
     for (int iColumn = 1; iColumn < iColCount; iColumn++) 
     {    
+0

대단히 감사합니다! – coffeetime

1

행과 열이 EPPlus 1-색인하여 코드는 다음과 같아야합니다.

for (int iRow = 1; iRow <= iRowCount; iRow++) 
    { 
     for (int iColumn = 1; iColumn <= iColCount; iColumn++) 
     {    
      worksheet.Cells[destinationRange.Start.Row + iRow, 
      destinationRange.Start.Column + iColumn].Value = 
      worksheet.Cells[sourceRange.Start.Row + iRow, 
      sourceRange.Start.Column + iColumn].Value; 
     } 
    } 
+0

감사합니다, 피트! – coffeetime

+0

여러분을 환영합니다! – Pete