从reogrid插件中读取数据如何进行for循环

在VS中使用reogrid插件表格,读取区域数据后,想进行for循环,但是显示索引问题,请指点。acc1[i,j]这个表达式的下面下划浪线显示无法将带有[]的索引应用于Referfencrange类型的表达式。

 var button2 = new ButtonCell("累计投产");
            sheet["E8"] = button2;
            button2.Click += (s, e) =>
            {
                var acc1 = sheet.Ranges[10, 3, 12,20];
                for (int j = 3; j <= 23; j++)
                {
                    for (int i = 10; i <= 21; i++)
                    {
                        if ( acc1[i,j]!= null)
                        {
                            acc1[i,j] = i;
                        };
                    };
                }
            };

基于new bing部分指引作答:
根据您提供的代码和错误信息,问题可能在于acc1被声明为ReferenceRange类型的对象,而无法直接通过索引访问其元素。

要解决这个问题,您可以尝试将acc1强制转换为RangePosition类型,然后使用GetCellData和SetCellData方法来访问和修改单元格数据。以下是修改后的代码示例:

var button2 = new ButtonCell("累计投产");
sheet["E8"] = button2;
button2.Click += (s, e) =>
{
    var acc1 = sheet.Ranges[10, 3, 12, 20];
    var rangePosition = acc1.Position;

    for (int j = rangePosition.StartColumn; j <= rangePosition.EndColumn; j++)
    {
        for (int i = rangePosition.StartRow; i <= rangePosition.EndRow; i++)
        {
            var cellData = sheet.GetCellData(i, j);
            if (cellData != null)
            {
                sheet.SetCellData(i, j, i);
            }
        }
    }
};

在修改后的代码中,我们通过acc1.Position获取了acc1的范围位置信息,并使用rangePosition.StartColumn、rangePosition.EndColumn、rangePosition.StartRow和rangePosition.EndRow来迭代范围内的单元格。然后,我们使用sheet.GetCellData方法获取单元格数据,使用sheet.SetCellData方法设置单元格数据。

这样,您应该能够在循环中正确访问和修改ReoGrid插件表格中指定范围的数据。

回答部分参考、引用ChatGpt以便为您提供更准确的答案:

根据您提供的代码,问题出现在表达式acc1[i,j]上,这是因为Referfencrange类型的表达式不支持使用方括号的索引访问。

要解决这个问题,可以使用GetValueSetValue方法来获取和设置指定单元格的值。下面是修改后的代码示例:

var button2 = new ButtonCell("累计投产");
sheet["E8"] = button2;
button2.Click += (s, e) =>
{
    var acc1 = sheet.Ranges[10, 3, 12, 20];
    for (int j = 3; j <= 23; j++)
    {
        for (int i = 10; i <= 21; i++)
        {
            var cell = acc1.Cells[i, j];
            if (cell != null)
            {
                cell.SetValue(i);
            }
        }
    }
};

在上面的代码中,我使用了acc1.Cells[i, j]来获取单元格对象,然后使用SetValue方法设置单元格的值为i

通过这种方式,您就可以在循环中正确地访问和修改表格中的单元格数据了。

var button2 = new ButtonCell("累计投产");
sheet["E8"] = button2;
button2.Click += (s, e) =>
{
    var acc1 = sheet.Ranges[10, 3, 12, 20];
    for (int j = 3; j <= 23; j++)
    {
        for (int i = 10; i <= 21; i++)
        {
            if (acc1[i - 1, j - 1].Data != null)
            {
                acc1[i - 1, j - 1].Data = i;

            };
        };
    };
};