[英]Can you dynamically create variables based on rows in an Excel file in C#?
我正在嘗試制作一個 C# 程序,該程序從 excel 文件中獲取坐標,因為每一列分別是 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; }
}
然后,當您遍歷每一行時,您可以同時創建和添加所有四個點。 像這樣的東西。
公共列表 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;
}
我在黑暗中對您的數據實際代表的內容進行了瘋狂的嘗試,但我會花時間提前 go 並將其旋轉成真正的 object 以便在您編寫代碼時更容易推理。
像“I”和“J”這樣的變量在這種情況下沒有節省足夠的時間來發揮作用。
最后的建議是提前 go 並查看 package EPPlus。 package 能夠將行轉換為結構化類
看看這個開始。 如何使用 EPPlus 將 excel 行解析回類型
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.