C# 跳过列范围的第一个值并添加到列表中
所以我有一个循环的范围,然后将值添加到列表中。我想跳过第一个值,因为它是一个标题。我怎么能这样做呢?目前,我正在增加所有的价值C# 跳过列范围的第一个值并添加到列表中,c#,excel,C#,Excel,所以我有一个循环的范围,然后将值添加到列表中。我想跳过第一个值,因为它是一个标题。我怎么能这样做呢?目前,我正在增加所有的价值 { var cellValues = new List<string>(); //var rowsCount = worksheet.UsedRange.Rows.Count; var columnRange = worksheet.UsedRange.Columns[1]; fore
{
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;
}
{
var cellValues=新列表();
//var rowscont=worksheet.UsedRange.Rows.Count;
var columnRange=worksheet.UsedRange.Columns[1];
foreach(columnRange中的变量项)
{
foreach(item.Value中的var cellValue)
{
添加(cellValue.ToString());
}
}
返回单元格值;
}
您可以使用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());
}
}
for(int a=1;a
或
var cellValues=new List();
//var rowscont=worksheet.UsedRange.Rows.Count;
var columnRange=worksheet.UsedRange.Columns[1];
bool first=true;
foreach(columnRange中的变量项)
{
如果(第一)
{
第一个=假;
}
其他的
{
foreach(item.Value中的var cellValue)
{
添加(cellValue.ToString());
}
}
}
返回单元格值;
或者ramin提到的
Skip()
。您可以使用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());
}
}
for(int a=1;a
或
var cellValues=new List();
//var rowscont=worksheet.UsedRange.Rows.Count;
var columnRange=worksheet.UsedRange.Columns[1];
bool first=true;
foreach(columnRange中的变量项)
{
如果(第一)
{
第一个=假;
}
其他的
{
foreach(item.Value中的var cellValue)
{
添加(cellValue.ToString());
}
}
}
返回单元格值;
或者ramin提到的
Skip()
。您可以使用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;
var cellValues=new List();
//var rowscont=worksheet.UsedRange.Rows.Count;
var columnRange=worksheet.UsedRange.Columns[1];
foreach(columnRange中的变量项)
{
foreach(var cellValue in((object[,])item.Value.Cast().Skip(1))
{
添加(cellValue.ToString());
}
}
返回单元格值;
但是因为
item.Value
是一个动态类型,我们需要强制转换它以使用扩展方法,并且因为它是一个锯齿数组,我们需要使用cast()
您可以使用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;
var cellValues=new List();
//var rowscont=worksheet.UsedRange.Rows.Count;
var columnRange=worksheet.UsedRange.Columns[1];
foreach(columnRange中的变量项)
{
foreach(var cellValue in((object[,])item.Value.Cast().Skip(1))
{
添加(cellValue.ToString());
}
}
返回单元格值;
但是因为
item.Value
是一个动态类型,我们需要强制转换它以使用扩展方法,并且因为它是一个锯齿状数组,我们需要使用cast()
嘿,当我尝试此操作时,我得到了一个错误,System.Core.dll中出现了类型为“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”的异常,但未在用户代码中处理。啊,这是因为它是一个动态类型,所以需要首先强制转换。我可以更新答案。嘿,当我尝试此操作时,我得到了一个错误,System.Core.dll中出现了类型为“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”的异常,但没有在用户代码中处理。啊,这是因为它是一个动态类型,所以需要首先强制转换。我可以在第一次和第二次运行时更新答案,但列表中没有值。var columnRange=worksheet.UsedRange.Columns[1]之后的columnRange中是否有值@罗玛:是的,有isi,我为循环编辑过,但第二个变体必须起作用。您检查过第二个变量后是否有值吗?@Roma使用断点它运行if语句,然后停止进程并返回零值。@Roma第一次和第二次运行正常,但列表中没有值。var columnRange=worksheet.UsedRange.Columns[1]之后的columnRange中是否有值@罗玛:是的,有isi,我为循环编辑过,但第二个变体必须起作用。您检查过第二个变量后是否有值吗?@Roma使用断点运行if语句,然后停止进程并返回零值。