“索引超出了数组的范围”exceptionC#

我试图保存Excel工作簿,但是,我收到exception“索引超出数组的界限”。

这是代码:

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 } } 

我究竟做错了什么? 任何帮助,非常感谢它。

在Excel中,单元格和范围不是从0开始,而是从1开始。因此,从1开始更改循环,如下所示:

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

行和列在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; } }