跳过列范围的第一个值并添加到列表中

时间:2016-04-28 19:42:12

标签: c# excel

所以我有一个我循环的范围,然后将值添加到列表中。我想跳过第一个值,因为它是一个标题。我怎么能这样做呢?就目前而言,我正在添加所有值

    {
        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;
    }

2 个答案:

答案 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>()