2017-09-25 50 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

関連する問題