C# взять строку из таблицы

Droz

Client
Регистрация
01.10.2018
Сообщения
10
Благодарностей
1
Баллы
3
Всем привет, подскажите пожалуйста что необходимо изменить чтобы строка из таблицы бралась не по номеру строки а по значению из переменной
C#:
var syncObject = project.GlobalVariables["test_namespace","my_sync_object"].Value;
var tb = project.Tables["Accs"]; // таблица
int row = int.Parse("0"); // Номер строки например 0
int count = tb.RowCount; // получаем количество строк в таблице

lock (syncObject )

{

    // Выходим по ошибке, если строк меньше чем надо
    if(count <= row) throw new Exception(string.Format("В таблице: {0} Хотим:{1} Ошибка, в таблице меньше строк чем надо", count, row));

    // Получаем строчку таблички по номеру
    string[] row_data = tb.GetRow(row).ToArray();

    tb.DeleteRow(0);

    // Записываем результат в переменные
    if(row_data.Length > 0) project.Variables["Login"].Value = row_data[0]; // Берем первую ячейку в переменную cell1
    if(row_data.Length > 1) project.Variables["Pass"].Value = row_data[1]; // Берем вторую ячейку в переменную cell2
    System.Threading.Thread.Sleep(100);
}
 
  • Спасибо
Реакции: Sho

Garn

Client
Регистрация
01.09.2016
Сообщения
69
Благодарностей
4
Баллы
8
C#:
var syncObject = project.GlobalVariables["test_namespace","my_sync_object"].Value;
var tb = project.Tables["Accs"]; // таблица
int row = int.Parse(project.Variables["Variables_name"].Value); // Номер строки например 0, учитывайте, что если придет не число в диапазоне int или вовсе не число то упадет
int count = tb.RowCount; // получаем количество строк в таблице

lock (syncObject )

{

    // Выходим по ошибке, если строк меньше чем надо
    if(count <= row) throw new Exception(string.Format("В таблице: {0} Хотим:{1} Ошибка, в таблице меньше строк чем надо", count, row));

    // Получаем строчку таблички по номеру
    string[] row_data = tb.GetRow(row).ToArray();

    tb.DeleteRow(0);

    // Записываем результат в переменные
    if(row_data.Length > 0) project.Variables["Login"].Value = row_data[0]; // Берем первую ячейку в переменную cell1
    if(row_data.Length > 1) project.Variables["Pass"].Value = row_data[1]; // Берем вторую ячейку в переменную cell2
    System.Threading.Thread.Sleep(100);
}
Если я правильно понял задачу, то возможно так
 
Последнее редактирование:
  • Спасибо
Реакции: Droz

Droz

Client
Регистрация
01.10.2018
Сообщения
10
Благодарностей
1
Баллы
3
C#:
var syncObject = project.GlobalVariables["test_namespace","my_sync_object"].Value;
var tb = project.Tables["Accs"]; // таблица
int row = int.Parse(project.Variables["Variables_name"].Value); // Номер строки например 0, учитывайте, что если придет не число в диапазоне int или вовсе не число то упадет
int count = tb.RowCount; // получаем количество строк в таблице

lock (syncObject )

{

    // Выходим по ошибке, если строк меньше чем надо
    if(count <= row) throw new Exception(string.Format("В таблице: {0} Хотим:{1} Ошибка, в таблице меньше строк чем надо", count, row));

    // Получаем строчку таблички по номеру
    string[] row_data = tb.GetRow(row).ToArray();

    tb.DeleteRow(0);

    // Записываем результат в переменные
    if(row_data.Length > 0) project.Variables["Login"].Value = row_data[0]; // Берем первую ячейку в переменную cell1
    if(row_data.Length > 1) project.Variables["Pass"].Value = row_data[1]; // Берем вторую ячейку в переменную cell2
    System.Threading.Thread.Sleep(100);
}
Если я правильно понял задачу, то возможно так
Возможно не правильно выразился, мне не номер строки нужен а взятие строки из таблицы по тексту из переменной и если не найдет то по красной линии
 

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
546
Благодарностей
1 125
Баллы
93
Всем привет, подскажите пожалуйста что необходимо изменить чтобы строка из таблицы бралась не по номеру строки а по значению из переменной
C#:
var syncObject = project.GlobalVariables["test_namespace","my_sync_object"].Value;
var tb = project.Tables["Accs"]; // таблица
int row = int.Parse("0"); // Номер строки например 0
int count = tb.RowCount; // получаем количество строк в таблице

lock (syncObject )

{

    // Выходим по ошибке, если строк меньше чем надо
    if(count <= row) throw new Exception(string.Format("В таблице: {0} Хотим:{1} Ошибка, в таблице меньше строк чем надо", count, row));

    // Получаем строчку таблички по номеру
    string[] row_data = tb.GetRow(row).ToArray();

    tb.DeleteRow(0);

    // Записываем результат в переменные
    if(row_data.Length > 0) project.Variables["Login"].Value = row_data[0]; // Берем первую ячейку в переменную cell1
    if(row_data.Length > 1) project.Variables["Pass"].Value = row_data[1]; // Берем вторую ячейку в переменную cell2
    System.Threading.Thread.Sleep(100);
}
Вероятно, вы хотите что-то такое. Но на будущее пишите подробнее.)
Что хотите, что должно получиться и как это должно выглядеть.

Поиск совпадений в строках Excel:
//var syncObject = project.GlobalVariables["test_namespace","my_sync_object"].Value;
var tb = project.Tables["Accs"]; // таблица
int count = tb.RowCount; // получаем количество строк в таблице
string search = project.Variables["search"].Value; // что нужно найти
int column = int.Parse(project.Variables["whichColumnToLookIn"].Value); // в каком столбце искать

//lock (syncObject)
{
    var check = -1;
    var rowList = new List<string>();
    for (var i = 0; i < count; i++)
    {
        if (!Regex.IsMatch(tb.GetRow(i).ToArray()[column], $"^{search}$")) continue;
        rowList.AddRange(tb.GetRow(i));
        check = i;
        break;
    }

    if (check < 0)
        throw new Exception($"Нет строк с \"{search}\" в столбце № {column}");

    tb.DeleteRow(check);

    // записываем результат в переменные
    if (rowList.Count > 0) project.Variables["Login"].Value = rowList[0]; // берем первую ячейку
    if (rowList.Count > 1) project.Variables["Pass"].Value = rowList[1];  // берем вторую ячейку
}
Приложил шаблон для примера ↓
 

Вложения

  • Спасибо
Реакции: Sho и Droz

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