什么是相当于InStr的数组(2维)在C#
我是新来的C#,如果我不解释我需要什么,请告诉我。 我从Excel文件读取一些数据,然后将数据存储到一个数组中。
excel.Application x1app = new excel.Application(); x1app.Visible = true; excel.Workbook x1workbook = x1app.Workbooks.Open(@"..."); x1workbook.Activate(); excel.Worksheet x1worksheet = x1workbook.Worksheets[1]; excel.Range x1range = x1worksheet.UsedRange; System.Array myvalues; myvalues = (System.Array)x1range.Cells.Value;
现在我想在数组中使用来自VBA
InStr
等价物,但是我不知道等价物是什么。
我已经尝试Array.IndexOf(myvalue, "")
,但这项工作只适用于一维数组。
如果你要将一个范围导入数据结构,我想你想要的是一个二维数组:
object[,] myvalues = x1range.Cells.Value;
个体价值可以被提取如下:
object cellValue = myvalues[3, 4];
如果你想遍历所有单元格,foreach是最简单的:
foreach (object o in myvalues) { string myText = o == null ? null : o.ToString(); }
或者,如果x / y位置很重要,则可以按如下方式遍历X / Y:
for (int i = 1; i < myvalues.GetLength(0); i++) { for (int j = 1; j < myvalues.GetLength(1); i++) { object o = myvalues[i, j]; } }
请注意,C#是基于0的,但在Excel输出中,您确实需要使用基于1的引用。
IndexOf
函数可以在C#中工作,但不能用于这样的数组。 如果你想使用它,你总是可以把数组转换成一个列表:
List<object> myList = myvalues.Cast<object>().ToList(); int found = myList.IndexOf("Foo");