所以我有一个我循环的范围,然后将值添加到列表中。我想跳过第一个值,因为它是一个标题。我怎么能这样做呢?就目前而言,我正在添加所有值
{
var cellValues = new List<string>();
//var rowsCount = worksheet.UsedRange.Rows.Count;
var columnRange = worksheet.UsedRange.Columns[1];
foreach (var item in columnRange)
{
foreach (var cellValue in item.Value)
{
cellValues.Add(cellValue.ToString());
}
}
return cellValues;
}
答案 0 :(得分:2)
您可以使用for
循环代替foreach
:
for (int a = 1; a < columnRange.Count; a++)
{
for (int b = 0; b < columnRange[a].Value.Count; b++)
{
cellValues.Add(columnRange[a].Value[b].ToString());
}
}
或
var cellValues = new List<string>();
//var rowsCount = worksheet.UsedRange.Rows.Count;
var columnRange = worksheet.UsedRange.Columns[1];
bool first = true;
foreach (var item in columnRange)
{
if (first)
{
first = false;
}
else
{
foreach (var cellValue in item.Value)
{
cellValues.Add(cellValue.ToString());
}
}
}
return cellValues;
ramin提到的或Skip()
。
答案 1 :(得分:1)
您可以使用LINQ的Skip
功能。
var cellValues = new List<string>();
//var rowsCount = worksheet.UsedRange.Rows.Count;
var columnRange = worksheet.UsedRange.Columns[1];
foreach (var item in columnRange)
{
foreach (var cellValue in ((object[,])item.Value).Cast<object>().Skip(1))
{
cellValues.Add(cellValue.ToString());
}
}
return cellValues;
但是因为item.Value
是一个动态类型,我们需要强制转换才能使用扩展方法,因为它是一个锯齿状数组,我们需要使用Cast<object>()
。