&引用;索引超出了数组的边界;例外情况C#
我正在尝试保存Excel工作簿,但收到异常“索引超出数组边界” 代码如下:&引用;索引超出了数组的边界;例外情况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
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您知道如何调试吗?一步一步地调试,直到您找到导致错误的状态。我敢打赌异常不在您认为的范围内。可能重复的是您知道如何调试吗?一步一步地调试,直到您找到导致错误的状态。我敢打赌异常不在您认为不在的范围内我想是的。可能是复制品