- Регистрация
- 24.08.2014
- Сообщения
- 301
- Благодарностей
- 49
- Баллы
- 28
Привет, ребзя.
Есть таблица с такими данными:
Пытаюсь сделать скрипт, который будет анализировать данные и удалять строки в двух ситуациях:
1. Если в столбце "Цена%" значение меньше чем заданное значение ( я беру не меньше 3-х), в таком случае из скриншота удалились бы все строки, кроме строк 1 и 2. К каждой строке типа ADA\BTC идёт ниже строка 24V - они удаляются парами.
2. В случае если значение в столбце "Цена%" больше чем заданное, то нужно взять значения из строки ниже и сравнить их с заданным значением. Тут внимательно - в первой строке находим ячейку со значением "Min", и берём значение из ячейки прямо под ней, так же делаем с "Max".
И в случае если одно из этих двух значений будет меньше заданного то так же удаляем 1 и 2 строки.
Я намутил такой код, но он не работает - выдаёт "Ошибка. Входная строка имела неверный формат". При этом, если именно в первом месте кода где есть
final.DeleteRow(i);
final.DeleteRow(i);
i = i - 1;
заменить этот кусок на что угодно, например на return "yes"; то код работает и не выдаёт ошибку.
Есть таблица с такими данными:
Пытаюсь сделать скрипт, который будет анализировать данные и удалять строки в двух ситуациях:
1. Если в столбце "Цена%" значение меньше чем заданное значение ( я беру не меньше 3-х), в таком случае из скриншота удалились бы все строки, кроме строк 1 и 2. К каждой строке типа ADA\BTC идёт ниже строка 24V - они удаляются парами.
2. В случае если значение в столбце "Цена%" больше чем заданное, то нужно взять значения из строки ниже и сравнить их с заданным значением. Тут внимательно - в первой строке находим ячейку со значением "Min", и берём значение из ячейки прямо под ней, так же делаем с "Max".
И в случае если одно из этих двух значений будет меньше заданного то так же удаляем 1 и 2 строки.
Я намутил такой код, но он не работает - выдаёт "Ошибка. Входная строка имела неверный формат". При этом, если именно в первом месте кода где есть
final.DeleteRow(i);
final.DeleteRow(i);
i = i - 1;
заменить этот кусок на что угодно, например на return "yes"; то код работает и не выдаёт ошибку.
Код:
var final = project.Tables["final"];
var min_volume = Convert.ToInt32(project.Variables["min_volume"].Value);
var precent_settings = Convert.ToInt32(project.Variables["precent"].Value);
for(int i = 1; i< final.RowCount; i++){
var final_row = final.GetRow(i).ToArray();
var precent_count = final_row.Length - 2;
var precent_int = Int32.Parse(final.GetCell(precent_count, i));
if ( precent_int < precent_settings ){
final.DeleteRow(i);
final.DeleteRow(i);
i = i - 1;
}
else{
var min_index = Array.IndexOf(final_row, "Min");
var max_index = Array.IndexOf(final_row, "Max");
var min_price_volume = Convert.ToInt32(final.GetCell(min_index, i + 1).Replace(",",""));
var max_price_volume = Convert.ToInt32(final.GetCell(max_index, i + 1).Replace(",",""));
if( min_price_volume < min_volume || max_price_volume < min_volume){
final.DeleteRow(i);
final.DeleteRow(i);
i = i - 1;
}
}
}