您可以在 C# 中根据 Excel 文件中的行动态创建变量吗?

Can you dynamically create variables based on rows in an Excel file in C#?

我正在尝试制作一个从 excel 文件获取坐标的 C# 程序,因为每一列分别是 x、y、z 和 r,每一行都是不同的点。我希望能够创建格式为 point0、point1 等的变量,具体取决于行数。

截至目前,我正在将每个单元格读入一个数组,然后从该数组手动创建点。在这种情况下,有 4 行和 4 个点(点 0 到 3)。这目前有效,但我不得不想象有一种更简单的方法可以做到这一点,或者至少有更动态的方法。 4 分不是什么大问题,但可以有更多。

        int rows = 4;

        for(int i = 0; i < 4; i++)
        {
           for(int j = 0; j < rows; j++)
           {
               points[i,j] = excel.ReadCell(i, j);
           }
        }
      
        for(int i = 0; i < 4; i++)
        {
            point0[0, i] = points[0, i];
        }

        for (int i = 0; i < 4; i++)
        {
            point1[1, i] = points[1, i];
        }

        for (int i = 0; i < 4; i++)
        {
            point2[2, i] = points[2, i];
        }

        for (int i = 0; i < 4; i++)
        {
            point3[3, i] = points[3, i];
        }

即使压缩手动创建点的循环集也会节省时间,我只是不确定是否有办法说

       for(int i = 0; i < rows; i++)
       {
           for(int j = 0; j < cols; j++)
           {
               point+"i"[i,j] = points[i,j]
           }
       }

其中第 i 次迭代连接到变量名称。

任何帮助将不胜感激,我愿意接受所有建议(如果你不知道的话,我是 C# 的新手)

我会定义一个 class 四点组合的含义。不是基于它们存储的行或列,而是它们实际代表的内容。

public class Shape
{
    public int Start { get; set; }
    public int End { get; set; }
    public int Mean { get; set; }
    public int Median { get; set; }
}

然后,当您遍历每一行时,您可以同时创建和添加所有四个点。像这样的东西。

public 列出 GetShapesFromExcel() { var list = new List();

        int StartColumn = 'x';
        int EndColumn = 'y';
        int MeanColumn = 'z';
        int MedianColumn = 'r';

        foreach (var row in workSheet)
        {
            var shape = new Shape()
            {
                Start = excel.ReadCell(row, StartColumn);
                End = excel.ReadCell(row, EndColumn);
                Mean = excel.ReadCell(row, MeanColumn);
                Median = excel.ReadCell(row, MedianColumn);
            };
        
        }
    return list;
    }

我在黑暗中对你的数据实际代表的内容进行了疯狂的尝试,但我会花时间继续并将其旋转成一个真实的对象,这样就更容易像你一样推理'重新编写代码。

像“I”和“J”这样的变量在这种情况下没有节省足够的时间。

最后的建议是继续检查包 EPPlus。该包能够将行转换为结构化 classes

查看此内容以开始使用。