&引用;索引超出了数组的边界;例外情况C#

&引用;索引超出了数组的边界;例外情况C#,c#,asp.net,excel,epplus,epplus-4,C#,Asp.net,Excel,Epplus,Epplus 4,我正在尝试保存Excel工作簿,但收到异常“索引超出数组边界” 代码如下: public static void Update() { FileInfo newFile = new FileInfo(@"C:\Users\"); using (ExcelPackage p = new ExcelPackage(newFile)) { ExcelWorkbook work = p.Workbook; ExcelNamedRange sou

我正在尝试保存Excel工作簿,但收到异常“索引超出数组边界”

代码如下:

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
    }
}
公共静态无效更新()
{
FileInfo newFile=newfileinfo(@“C:\Users\”);
使用(ExcelPackage p=newexcelpackage(newFile))
{
Excel工作簿工作=p.工作簿;
ExcelNamedRange sourceRange=work.Names[“NewTakt”];
ExcelNamedRange destinationRange=work.Names[“PreviousTakt”];
Excel工作表=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此处发生异常
}
}

我做错了什么?非常感谢您的帮助。

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

    for (int iRow = 1; iRow < iRowCount; iRow++)
    {
        for (int iColumn = 1; iColumn < iColCount; iColumn++)
        {               
for(int-iRow=1;iRow
在Excel中,单元格和区域不是从0开始,而是从1开始。因此,从1开始更改循环,如下所示:

    for (int iRow = 1; iRow < iRowCount; iRow++)
    {
        for (int iColumn = 1; iColumn < iColCount; iColumn++)
        {               
for(int-iRow=1;iRow
行和列在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;
        }
    }

for(int-iRow=1;iRow行和列在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;
        }
    }

用于(int iRow=1;iRow您知道如何调试吗?一步一步地调试,直到您找到导致错误的状态。我敢打赌异常不在您认为的范围内。可能重复的是您知道如何调试吗?一步一步地调试,直到您找到导致错误的状态。我敢打赌异常不在您认为不在的范围内我想是的。可能是复制品