Поиск по таблице. Вывод номера строки в которой нашелся эелемент.

Budda

Client
Регистрация
13.07.2015
Сообщения
247
Благодарностей
41
Баллы
28
Здравствуйте. Нашел код на форуме который сохраняет в переменную номер столбца, в котором нашлось искомое значение.
Код:
// берем из переменной текст, который надо искать
var textContains = project.Variables["tovar"].Value;
// получаем таблицу, в которой будем искать
var sourceTable = project.Tables["ОПТ Craft-Tec Темп new"];
// ищем в каждой строчке в таблице
lock(SyncObjects.TableSyncer)
{
    for(int i=0; i < sourceTable.RowCount; i++)
    {
        // читаем строку из таблицы (это будет массив ячеек)
        var cells = sourceTable.GetRow(i).ToArray();
        // пройдем в цикле по всем ячейкам
        for (int j=0; j < cells.Length; j++)
        {
            // проверяем содержание текста в ячейке, если есть совпадение возвращаем
            // номер ячейки
            if (cells[j].Contains(textContains))
                return j;
        }
    }
}
// если ничего не нашли возвращаем "no"
return "no";
Как добавить сохранение в переменную не только номера столбца, но и номер строки? Как это реализовать? То есть нужно точно знать в какой ячейке было найдено искомое значение.

Подскажите пожалуйста.
 
  • Спасибо
Реакции: phoenixs

Budda

Client
Регистрация
13.07.2015
Сообщения
247
Благодарностей
41
Баллы
28
Всё, нашел!
Код:
// берем из переменной текст, который надо искать
var textContains = project.Variables["tableSearchTextContains"].Value;
// получаем таблицу, в которой будем искать
var sourceTable = project.Tables["SourceTable"];
// ищем в каждой строчке в таблице
lock(SyncObjects.TableSyncer)
{
    for(int i=0; i < sourceTable.RowCount; i++)
    {
        // читаем строку из таблицы (это будет массив ячеек)
        var cells = sourceTable.GetRow(i).ToArray();
        // пройдем в цикле по всем ячейкам
        for (int j=0; j < cells.Length; j++)
        {
            // проверяем содержание текста в ячейке, если есть совпадение возвращаем
            // номер ячейки
            if (cells[j].Contains(textContains))
            {
            project.Variables["RowCount"].Value = Convert.ToString(i);
                return j;
            }
        }
    }
}
// если ничего не нашли возвращаем "no"
return "no";
Этот код выдаст Вам в переменную RowCount номер строки, а в переменную, которую Вы прописали в настройках экшена - номер столбца.
 

Rimen

Client
Регистрация
28.10.2019
Сообщения
404
Благодарностей
232
Баллы
43
Отличный код!
У меня одного с Гугл таблицами не завелся?
 

ukrainec2014

Client
Регистрация
12.05.2017
Сообщения
348
Благодарностей
51
Баллы
28

Rimen

Client
Регистрация
28.10.2019
Сообщения
404
Благодарностей
232
Баллы
43
у меня тоже с гугл таблицей не работает, пока не знаю вариантов как поправить...
Оказалось всё до безобразия просто.
нужно
C#:
var sourceTable = project.Tables["SourceTable"]
заменить на
C#:
var sourceTable = project.GoogleSpreadsheets["SourceTable"]
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)