我需要按如下方式输出值:
"API Docs Portal : op-api-docs"
"Big Ideas : op-bigideas"
"Education : op-education"
....
我已经尝试了一些东西,但它并没有按预期工作......
for (var x = 1; x <= reportValue.GetLength(0); x++)
{
for (var y = 1; y <= reportValue.GetLength(1); y++)
{
if (reportValue[x, y] != null)
{
var id = reportValue[x, y];
var name = reportValue[x, y + 1];
var result = name + " : " + id;
}
}
}
注意:
这就是我获取reportValue
数组的方法(使用C#Interop):
var reportLast = ws.Range["A" + ws.Rows.Count].End(Excel.XlDirection.xlUp).Row;
var rngReport = (Excel.Range)ws.Range[ws.Cells[2, 1], ws.Cells[reportLast, 2]];
var reportValue = rngReport.Cells.Value;
答案 0 :(得分:6)
目前尚不清楚为什么你这里有两个循环。你总是希望每行有两个相同的元素 - 索引1和索引2.所以你只需要:
for (var x = 1; x <= reportValue.GetLength(0); x++)
{
var id = reportValue[x, 1];
var name = reportValue[x, 2];
var result = name + " : " + id;
// Use result
}
这将获取[1, 1] : [1, 2]
,然后[2, 1] : [2, 2]
,然后[3, 1] : [3, 2]
等 - 这看起来就像你需要的那样。
答案 1 :(得分:0)
将2D数组转换为此格式的字符串的最佳方法是:
var results = string.Join(Environment.NewLine, array.Select(x => string.Join(" : ", x)));
以此数组为例:
var array = new string[][]
{
new string[] { "Hello world", "Hello" },
new string[] { "Stack", "Overflow" }
};
输出&#39;结果&#39;是:
你好世界:你好
堆叠:溢出
答案 2 :(得分:0)
标题有点误导,因为它似乎不是标准的2D阵列。
尽管如此:
StringBuilder builder = new StringBuilder();
for (int i = 1; i <= reportValue.GetLength(0); i++)
{
string id = (string)reportValue[i, 1];
string name = (string)reportValue[i, 2];
builder.AppendLine(id + " : " + name);
}
// Process the result
这从1开始for
循环,因为数组似乎是从1开始而不是从0开始。
假设您只需要两个值,则可以使用[i,1]和[i,2]而不是使用GetLength(1)
循环次要部分的长度。